Test Driven Development for Embedded C 読書会 第6回

本日は以下の2章。第12章の方は長いので、来週に持ち越しとなりました、 ・第11章「SOLID, Flexible, and Testable Designs」 ロバート・C・マーティン著の「アジャイル開発の奥義」で紹介されているSOLID原則およびSOLID原則に基づいたCによる実装について紹介されています。 続きを読む
0
Yohei @legoboku

#tdd4ec 近況報告。仕事で改善活動をやってますなど。

2012-08-19 13:10:01
Yohei @legoboku

#tdd4ec TDD in Actionの参加報告。事前設計の考え方が勉強になったとかhttp://t.co/QKP4qghy

2012-08-19 13:18:24
Yohei @legoboku

#tdd4ec TDD in actionは朝から晩まで、ビール飲みながらやってたらしい

2012-08-19 13:19:56
Yohei @legoboku

#tdd4ec リーダブルコードの紹介。よくまとまってて分かりやすい。

2012-08-19 13:25:01
Yohei @legoboku

#tdd4ec Go言語のハンドブックをちら見。

2012-08-19 13:26:10
CAD @yukikado

#tdd4ec リーダブルコード、原書はあまり評価されなかったらしい。訳書が出てブレイク。

2012-08-19 13:31:10
Yohei @legoboku

#tdd4ec Chapter 11 SOLID, Flexible and Testable Designs. Robert MartinのSOLID原則について説明されている。アジャイルソフトウェア開発の奥義を参照。http://t.co/k63KKeoS

2012-08-19 13:33:50
CAD @yukikado

#tdd4ec SOLID原則、大学で学んだときは、凄く当たり前というか、根本的なことだと思ったが、職業プログラマになってみて、如何に死守することが難しいか身にしみて分かるようになった。

2012-08-19 13:34:42
Yohei @legoboku

#tdd4ec TDDはコードの腐敗探知機である。

2012-08-19 13:35:39
Yohei @legoboku

#tdd4ec Open-Closed Principleの例:USB。USBポートを持つデバイスを受け入れる拡張性がある。USBデバイスを変更する必要がない。

2012-08-19 13:40:45
高橋 明 @Talos208

Ruby(特にRails)で書いてると、OCPを破ったほうがいい場合もあったりする #tdd4ec

2012-08-19 13:40:48
Yohei @legoboku

#tdd4ec Liskovの置換原則。単に型が合うじゃなくて、意味的にサーバとクライアントの意図が合致しなければいけない。

2012-08-19 13:43:28
Yohei @legoboku

#tdd4ec Dependency Inversion Principle(依存性逆転の法則)はよく使うな。モジュールの依存関係を整理。

2012-08-19 13:47:53
CAD @yukikado

#tdd4ec 依存関係逆転の法則( Dependency Inversion Principle)をC言語で実現するには、関数ポインタを使う。

2012-08-19 13:48:45
Yohei @legoboku

#tdd4ec DIPは考え方であって、実現手段はいろいろ。リンク、関数ポインタ、Abstract Data Type、、

2012-08-19 13:51:04
Yohei @legoboku

#tdd4ec ではオブジェクト指向の観点で語られているSOLID原則をCで実装する方法が紹介されている。

2012-08-19 13:52:31
Yohei @legoboku

#tdd4ec オブジェクト指向っぽいmultiple instance moduleをC言語で実装する方法について。型を表現する構造体を用意して、関数の第1引数にその構造体へのポインタ(インスタンス)を渡して、状態を保持する。

2012-08-19 13:57:59
Yohei @legoboku

#tdd4ec ハードウェアのバリエーションに対応するための条件文を導入すると(switch文がいっぱい)保守が面倒なコードができてしまう。

2012-08-19 14:01:21
Yohei @legoboku

#tdd4ec クラス継承をCで実装する時に、クラス型を表現する構造体を入れ子にするのはよくある。

2012-08-19 14:05:13
CAD @yukikado

#tdd4ec 構造体のネストを利用し、クラスの継承を擬似的に実装できる。構造体の最初に、親クラスに当たる構造体をネストすれば、キャストすることによって、親クラスのように振る舞うことが出来る。

2012-08-19 14:09:55
Yohei @legoboku

@yukikado @Catu_dm switch文が重なり始めたときの対処はリファクタリングの章で解説されていますね。#tdd4ec

2012-08-19 14:12:40
Yohei @legoboku

#tdd4ec ハードウェアとか仕様のバリエーションにswitch文で対処しようとすると条件分岐の嵐になるから、インタフェースを動的に変えるために関数ポインタとか使うことを推奨している。

2012-08-19 14:14:17
Yohei @legoboku

#tdd4ec バリエーションを条件分岐で対処しようとすると、同じようなコードがあちこちに散らばってメンテ箇所が増えるからいけない。

2012-08-19 14:15:34
CAD @yukikado

#tdd4ec この、switch文のお化けがいっぱい出来るのは、コードの自動生成で対応できるかもとも思ったが、それこそ関数ポインタのテーブル作ったほうがスマートだな。よくできてる。

2012-08-19 14:15:52
1 ・・ 4 次へ