Tidy First? を読みました
Tidy First? を読んだメモと感想
おつかれさまです。 以前書いた「自分にフォーカスする」という流れで、積み本の消化を始めました。 今回は Tidy First? を読みました。 著者のケント・ベック氏は、エクストリームプログラミング(XP)の提唱者として知られ、アジャイル宣言の署名者の一人でもあります。 また、xUnit 系テストフレームワークの源流づくりや JUnit への貢献でも有名な方です。 まぁ皆さんご存知ですよね。
近況
最近のプロジェクトでは、実装部分をかなり任されています。 どの実装が良いか、今後も改修しやすいかを試しているうちに、コードが煩雑になってきてしまいます。 そんなこんなで、改めてしっかりと Tidy First? を読破しました(積んでいただけですが)。
章の紹介
第1部は、すぐに活用できる整頓のテクニックが語られていました。 下記の章タイトルからも予想できるように、基礎的ではあるものの、意識して言語化していなかった日々の整頓術がまとまっています。 第2部は第1部の整頓術をどのように適用していくか、第3部は仕事としてどのように整頓(リファクタリング)を適用していくのか、いつするべきなのかが語られています(ここは時間をおいて再読する必要がありそうです)。
第I部 整頓
- ガード節
- デッドコード
- シンメトリーを揃える
- 新しいインターフェイス、古い実装
- 読む順番
- 凝集の順番
- 変数宣言と初期化を一緒の場所に移動する
- 説明変数
- 説明定数
- 明示的なパラメーター
- ステートメントを小分けにする
- ヘルパーを抽出する
- ひとかたまり
- 説明コメント
- 冗長なコメントを削除する
第II部 管理術
- 分けて整頓する
- 連鎖
- バッチサイズ
- リズム
- 絡まりを解きほぐす
- 先に整頓、あとに整頓、改めて整頓、整頓しない
第III部 理論
- 要素を役立つように関係づける
- 構造と振る舞い
- 経済性: 時間価値とオプショナリティ
- 明日の1ドルより今日の1ドル
- オプション
- オプション VS キャッシュフロー
- 可逆的な構造変更
- 結合
- コンスタンチンの等価性
- 結合 VS 分離
- 凝集
- 結論
考えたこと
読みながら考えていたことを書きます。 また読んだら追加します。
1章 ガード節
自分はかなりガード節を使用します。 なるべく関数内の中心となる部分では例外について考えたくないので、関数の始まりで弾き返す(return)ように心がけています。
2章 デッドコード
バージョン管理しているし戻せるのだから、もったいないと思っても気軽に消そうと書かれていました。 これは、自分がいらないものを捨てるときの考え方に似ていました。
だいたい使わないし、使いたい頃には古くなっている。
3章 シンメトリーを揃える
コードは有機的に成長する
これは最近かなり気にしている部分です。 自分だけで書いていても、同じような処理なのに書き方が昨日と今日、午前と午後で違うことがあります。 チームならなおさらです。なるべく書き方は揃えて、読みやすく、コピーしやすくしたいと考えています。 この辺は、書き方が決まってくる Go 言語などの強みだと思います。
5章 読む順番 - 6章 凝集の順番 - 7章 変数宣言と初期化を一緒の場所に移動する
この辺は、コードが長くなってきた場合によく考えます。 ファイルの冒頭にプロパティなどを記述し、次にコンストラクタ、各メソッドという順で私は基本的に記述します。 ですが、画面上にバインドしている値が多いコードでは冒頭が長くなってしまいます。 また、特定のメソッド用の値をキャッシュしているようなフィールドが離れてしまうので、近くに置くか迷ったりしました。 ここは「凝集の順番」や「変数宣言」の場所についての考え方を適用できる箇所だと考えました。
感想
本の中では「午前中に読んで、午後には整頓術を活用できる」と語られていますが、本当にその通りで、
いつも行っているような「読む順番の整理」や「ひとかたまり」などを再度意識できました。
「ああ、ここは本にあったところだな」となりそうでした(休みの日に読んだので、仕事で試すのが楽しみです)。
ちょっと書く時間がなかったのでまた追記しますが、整頓術を活用していきたいと思います。
参考URL
ケント・ベック氏の紹介として参照したURLです。

ja.wikipedia.orgもし少しでも気になったら、ぜひ本もチェックしてみてください。