平鍋さんの『ソフトウェア工学の名著探訪』第3回( #agileway )
平鍋さん( @hiranabe )がUSTでソフトウェア工学の名著紹介を
おこなわれている際に紹介されていた本をまとめておきます.
ちなみにハッシュタグは #agileway です.
今回は,第3回目についてです.
http://www.ustream.tv/recorded/9545062
今回は Steve McConnell の Code Complete についてでした.
CODE COMPLETE 第2版 上 完全なプログラミングを目指して
- 作者: スティーブマコネル,Steve McConnell,クイープ
- 出版社/メーカー: 日経BP社
- 発売日: 2005/03/26
- メディア: 単行本
- 購入: 44人 クリック: 1,166回
- この商品を含むブログ (288件) を見る
CODE COMPLETE 第2版 下 完全なプログラミングを目指して
- 作者: スティーブマコネル,Steve McConnell,クイープ
- 出版社/メーカー: 日経BP社
- 発売日: 2005/03/26
- メディア: 単行本
- 購入: 16人 クリック: 193回
- この商品を含むブログ (164件) を見る
まずは,エラーハンドリングの設計に防火壁の概念をもうけることに
ついてでした.この話は聞いていて,その場でなるほどと思いました.
防火壁という統一思想を導入すると,エラーハンドリングが含まれて
いたとしても,すっきりとした構成が作れそうです.
そして,次に 問題の解き方に関してでした.Code Complete 内では
George Polya の How to Solve it が参照されているようです.
How to Solve It: A New Aspect of Mathematical Method (Princeton Science Library)
- 作者: George Polya,John Horton Conway
- 出版社/メーカー: Princeton Univ Pr
- 発売日: 2004/04/05
- メディア: ペーパーバック
- 購入: 4人 クリック: 8回
- この商品を含むブログ (6件) を見る
- 作者: G.ポリア,G. Polya,柿内賢信
- 出版社/メーカー: 丸善
- 発売日: 1975/04/01
- メディア: 単行本
- 購入: 94人 クリック: 1,656回
- この商品を含むブログ (155件) を見る
Divide and Conquer (分割攻略)が知られているが,抽象度を高める形での
Name and Conquer (定義攻略) による解き方もあるとのこと.
確かに Name and Conquer に関しては,オブジェクト指向設計と似ていると
感じました.ただ,平鍋さんも勘と経験とおっしゃっていたように,
うーんと問題をにらんでえいやっと導き出すことになりそうです.
その次に,複雑なIf-else文を単純にするテーブル駆動方式についてでした.
関数ポインタテーブルやポリモーフィズムなどにより,確かに分岐が
減りますね.構造がすっきりすることは意識していましたが,分岐が
減るということは意識していませんでした.実際は同一のことでしたが.
おまけで,上村敏彦さんの『「やり残しゼロ!」の仕事術60』を紹介されていました.
- 作者: 上村敏彦
- 出版社/メーカー: すばる舎
- 発売日: 2009/10/20
- メディア: 単行本
- 購入: 2人 クリック: 12回
- この商品を含むブログ (4件) を見る
- タスクの目的を意識する.タスクを依頼する際には目的を添える.
- 達成感(Sense of Completion)
を意識しているそうです.明日から私自身も意識していこうと思います.
今回も色々勉強させていただきました.平鍋さん,ありがとうございます.
プログラミングで悩まないように,ある程度 Code Complete を読んでおき,
それでも困ったときに再度読み直すようにしておこうと思います.
#平鍋さんがUST内で言いわすれて,その後tweetしたことを下記にメモ.
- 「OOは分岐除去の仕組み。唯一除去できないポイントは、new というオブジェクトの誕生の瞬間である。ここを分岐可能にするのが、Factoryであり、DI コンテナ。」
- 「assertion はユニットテストの直系祖先で、設計を支える実行可能コードと開発者の習慣。assertionが製品コードの外にでて、ユニットテストとなり、エントリポイントを多数持ったのが画期的。それによって、リズムと色!、がでて開発者の習慣に繋がった。」
- 「コードの分岐をデータで表現したのがテーブル駆動。やりすぎたのがxmlコンフィグ地獄。コードの分岐を「名前」で消去できないか考えたのがConvention over Configuration. 」
- 「Code Complete と Sense of Completion は Complete つながり。」