Test Driven Development for Embedded C 読書会 第7回 (2012/10/6) #tdd4ec

Test Driven Development for Embedded C 読書会 第7回 第12章「Refactoring」、第13章「Adding Tests to Legacy Code」
1
Yohei @legoboku

#tdd4ec 関数の移動の際に抽象度を上げて、他の処理にも使えるようにしている。

2012-10-06 14:59:35
goyoki @goyoki

コールスタックのバグやオーバーフローを気にするとか組み込みならではで勉強会では新鮮 #tdd4ec

2012-10-06 14:59:17
Yohei @legoboku

@goyoki 一度、スタックを破壊して、スレッドが入れ替わった後に異常な振る舞いするバグを埋め込んだことがありますorz

2012-10-06 15:01:25
Harlequin Shrimp @EspernaShrimp

上司がリファクタリングを嫌がる理由は短期的なリスクが高くて短期的なメリットがないからで、、、開発前半以降でリファクタリングしなければいけない状態になっていたら負けなのかもしれない #tdd4ec

2012-10-06 15:02:10
Yohei @legoboku

#tdd4ec リンク時にプラットフォーム依存部分を別ファイルに分割し、テスト時はTest Doubleに置き換えるテクニック。関数ポインタ置換より簡単。

2012-10-06 15:06:24
Harlequin Shrimp @EspernaShrimp

クイックスワップは条件コンパイルによってリファクタリング前後のコード切り替えを行うもの #tdd4ec

2012-10-06 15:09:11
Yohei @legoboku

#tdd4ec リファクタリングに対してパフォーマンスはどうなんだ?という意見について。Kent Beck曰く、動くようにしろ、きれいにしろ、速くしろ。きれなコードの方が最適化しやすい。

2012-10-06 15:13:16
Harlequin Shrimp @EspernaShrimp

カリカリの速度チューニングが必要なこともあるが、コードのすべての業においてではない #tdd4ec

2012-10-06 15:13:46
Yohei @legoboku

#tdd4ec 最近のコンパイラだと短いコードはインライン化するし、最近のCPUでは関数コールのコストはほぼゼロとのこと。

2012-10-06 15:16:30
Yohei @legoboku

#tdd4ec 紹介されている最適化の専門家Dr. Joseph M. Newcomerってこの人かな。http://t.co/X36eubfQ

2012-10-06 15:18:11
miosan @t_mioki

というかリファクタリングの必要性を上司に見せたら負け、みたいな #tdd4ec

2012-10-06 15:18:12
Harlequin Shrimp @EspernaShrimp

時間割り当てを使い切ったら失敗するようなテストを書く。これはかなり有効だと思うが実際にはどうテストを書くべきか。。 #tdd4ec

2012-10-06 15:19:22
CAD @yukikado

早期最適化の問題は、2対8の法則(プログラムの処理にかかる時間の80%は、20%のコードが占める)に寄っているんだろう。たいていの最適化は、速度の改善にあまり貢献しないらしい。 #tdd4ec

2012-10-06 15:21:18
Yohei @legoboku

#tdd4ec 意見ではなくデータに基づいてアーキテクチャに自信をもつ。一つのデータは1000人の専門家の意見に勝る。

2012-10-06 15:22:24
Yohei @legoboku

#tdd4ec 13章「Adding Tests to Legacy Code」へ

2012-10-06 15:52:27
Yohei @legoboku

#tdd4ec テストのないコードに対してリファクタリングするのは危険。ただし、既存のコードがテストを意識して設計されていないのはザラなので、実際にはテストのないコードに対してテストを追加していかなければならない。

2012-10-06 15:53:15
Yohei @legoboku

#tdd4ec 呼び出し元の既存コードの制御に影響を与えない場合にのみ安全になる。

2012-10-06 15:57:24
Yohei @legoboku

#tdd4ec 前よりもコードをきれいな状態にする「ボーイスカウト原則」http://t.co/uJc1iaWx

2012-10-06 16:01:31
Yohei @legoboku

”Don’t feel left out ladies, Girl Scouts add tests too.” #tdd4ec / “Legacy Code Change – a Boy Scout Adds Tests « Jam…” http://t.co/VIiZ3AZg

2012-10-06 16:06:35
Yohei @legoboku

#tdd4ec 当初の目的の修正とリファクタリングを分けた方がいいのでは?という意見。コードレビューの時に前者をチェックする時に後者がまじるとわかりにくくなる?

2012-10-06 16:18:03
Harlequin Shrimp @EspernaShrimp

上がソフトウェアの欠陥がビジネス上の大きな損失につながることに対する理解があるかどうかが肝 #tdd4ec

2012-10-06 16:24:53
Yohei @legoboku

#tdd4ec ボーイスカウト原則が組織に浸透するにはどうしたら?上位者がソフトウェアによる欠陥がビジネス上のリスクになることを理解していると、担当者もやりやすい。

2012-10-06 16:24:55
Yohei @legoboku

#tdd4ec 変更点を見つける、テストする箇所を見つける、依存性を壊す、テストを書く、変更する、リファクタリングする。

2012-10-06 16:33:15
kazumi007 @kazumi007

だれもUSBメモリをもっていないという。ちょっと珍しい状況。 #tdd4ec

2012-10-06 16:40:37
Yohei @legoboku

#tdd4ec 13章の後半を要約すると「しんどいかもしれんけどがんばれ」

2012-10-06 17:29:04