課題図書
第8回目のデッドライン読書会(読書×締切ではじめる「デッドライン読書会」を始めました)の課題図書は第7回に引き続き、「レガシーコードからの脱却」の後半部分です。後半部分の範囲は、8章プラクティス4「協力しあう」から最後まででした。第7回の感想はこちら(デッドライン読書会#07「レガシーコードからの脱却」(前半)の感想文)です。
感想文
全体
あらためて本書で紹介しているプラクティスを転記すると、次の9つになります。
- プラクティス1:やり方より先に目的、理由、誰のためかを伝える
- プラクティス2:小さなバッチで作る
- プラクティス3:継続的に統合する
- プラクティス4:協力しあう
- プラクティス5:「CLEAN」コードを作る
- プラクティス6:まずテストを書く
- プラクティス7:テストでふるまいを明示する
- プラクティス8:設計は最後に行う
- プラクティス9:レガシーコードをリファクタリングする
9つのプラクティスは、この書籍独自ではなく、これまでに他書で語られていたプラクティスで特に重要視すべきものをまとめた形をとっています。それぞれのプラクティスでは、概要、目的、はじめ方、制約などを語っています。さらにその詳細(いちおう各章に「実践しよう!」っていう節もありますが、それでも概要かな…)が必要なときには関連書籍へゴー!という位置づけです。後半部分を読んで特にそう感じました。
本書の概要の具合からすると、もしくは、「エンジニアはそういったことを気にする必要があるんだよ」というマネージャーなどの周辺の人向けの本なのかもしれないですね。
で、「関連書籍へゴー!」となると、主要どころでは次の本になると思います。
本書の最後に「レガシーコードからの学び」というまとめの章があります。ここで著者のBerstein氏が強調していることは、アジャイル型の開発において、マネジメントプラクティスだけではなく、もっと技術プラクティスに着目しようと言っています。
技術プラクティスはアジャイルのマネジメントプラクティスと少なくとも同じくらいには重要である。しかし、多くの組織ではほとんど注意が向けられていない。アジャイルの技術プラクティス抜きでアジャイルのマネジメントプラクティスをやっても、多少は利益があるだろう。だが、アジャイルの本質的な価値は、エクストリームプログラミングの技術プラクティスを適用することによって得られるのだ。
14章 レガシーコードからの学び(P.243)
自分自身に当てはめても最近はソフトウェア開発のソフトな部分(コミュニケーションなど)によく興味を持っていました。原点回帰し、技術プラクティスを精進するのは重要ですね。ソフトウェア開発の、、、ハードな部分とでも言うんでしょうか^^;
個別
勉強になったところを個別に抜き出します。
私が「ユニットテスト」の「ユニット」といった場合、多くの開発者が想定しているメソッド、クラス、モジュール、関数などのようなエンティティを指すものではない。
ユニットとはふるまいの単位、つまり独立した検証可能なふるまいのことだ。
10.3.2 振る舞いの集合体(P.169)
自分の中には「関数があってユニットテストがある」ということが染み付いているため、この整理はすっきりしますね。テストファースということは、振る舞いをテストする必要(このテストは、別名でいうと、チェック、ふるまい、設計、仕様、などか)があり、ふるまいの単位がユニットなのだと。
そこで私はクライアントに、シャント、依存性の注入、及びモックを使った…
10.7 テスト駆動開発は失敗することがある(P.173)
シャントがわからなかったので調べました。たぶんテスト駆動開発にある「Self Shunt(自己接続)パターン」のShuntだと思います。オブジェクトが他のオブジェクトときちんとやり取りしていることをテストするためのパターン。その他にも右記のサイトではモック、スタブと並列して解説されていました→CunninghamのWiki:Mock Stub Shunt。
コードは読むためのものだ。本や新聞の記事と変わらない。平均して、コードは書かれる回数の10倍読まれている。
12.3 コーディング対クリーニング(P.208)
「1回書いたら終わり」って考える人は流石に少ないだろうけど、1回リリースできたらもういいかなっていう人は多そう。読めるコードでなくてはだめ。コメントで語るのも良くない。
次回(#09)
スケジュールはGoogleカレンダーで分かるようにしています。本日以降は次の要領です。
- #09の候補書籍(検討中)
- Design It!
- INSPIRED 2nd Edition
- フィンテックエンジニア養成読本
- IT業界の病理学
- デッドライン
- #08の感想交換1Week(12/30〜1/5)
- インターバル(1/6-1/12)
- #09の読書する時間2Week(1/13~1/25)
- #09のブログポスト期限(1/26)
コメント