Test Driven Development for Embedded C 読書会 第6回
#tdd4ec TDD in Actionの参加報告。事前設計の考え方が勉強になったとかhttp://t.co/QKP4qghy
2012-08-19 13:18:24#tdd4ec Chapter 11 SOLID, Flexible and Testable Designs. Robert MartinのSOLID原則について説明されている。アジャイルソフトウェア開発の奥義を参照。http://t.co/k63KKeoS
2012-08-19 13:33:50#tdd4ec SOLID原則、大学で学んだときは、凄く当たり前というか、根本的なことだと思ったが、職業プログラマになってみて、如何に死守することが難しいか身にしみて分かるようになった。
2012-08-19 13:34:42#tdd4ec Open-Closed Principleの例:USB。USBポートを持つデバイスを受け入れる拡張性がある。USBデバイスを変更する必要がない。
2012-08-19 13:40:45#tdd4ec Dependency Inversion Principle(依存性逆転の法則)はよく使うな。モジュールの依存関係を整理。
2012-08-19 13:47:53#tdd4ec 依存関係逆転の法則( Dependency Inversion Principle)をC言語で実現するには、関数ポインタを使う。
2012-08-19 13:48:45#tdd4ec オブジェクト指向っぽいmultiple instance moduleをC言語で実装する方法について。型を表現する構造体を用意して、関数の第1引数にその構造体へのポインタ(インスタンス)を渡して、状態を保持する。
2012-08-19 13:57:59#tdd4ec ハードウェアのバリエーションに対応するための条件文を導入すると(switch文がいっぱい)保守が面倒なコードができてしまう。
2012-08-19 14:01:21#tdd4ec 構造体のネストを利用し、クラスの継承を擬似的に実装できる。構造体の最初に、親クラスに当たる構造体をネストすれば、キャストすることによって、親クラスのように振る舞うことが出来る。
2012-08-19 14:09:55@yukikado @Catu_dm switch文が重なり始めたときの対処はリファクタリングの章で解説されていますね。#tdd4ec
2012-08-19 14:12:40#tdd4ec ハードウェアとか仕様のバリエーションにswitch文で対処しようとすると条件分岐の嵐になるから、インタフェースを動的に変えるために関数ポインタとか使うことを推奨している。
2012-08-19 14:14:17#tdd4ec バリエーションを条件分岐で対処しようとすると、同じようなコードがあちこちに散らばってメンテ箇所が増えるからいけない。
2012-08-19 14:15:34#tdd4ec この、switch文のお化けがいっぱい出来るのは、コードの自動生成で対応できるかもとも思ったが、それこそ関数ポインタのテーブル作ったほうがスマートだな。よくできてる。
2012-08-19 14:15:52