日々のコーディングにおける整頓は奥が深い。整頓の粒度やタイミングは開発しているソフトウェアの価値を左右する。本書はその戦略的指南書。ここでいう整頓とは、振る舞いの変更とは別の構造的な変更を指し、リファクタリングのサブセットとしている。整頓をするということは、つまりコードの可読性や保守性を高めることで、後の振る舞いの変更を安全かつ効率的にする。
リファクタリングにしろ整頓にしろ、物事はトレードオフ。本書ではゴルディロックスの世界1と表現している。
- ヘルパーを抽出する ↔︎ ひとかたまりにまとめる
- 必要な説明コメントを書く ↔︎ 冗長なコメントを書かない
- 先に整頓する ↔︎ 後で整頓する
第1部はガード節や変数宣言順序のような小技から始まる。こうした小技を日々の開発で習得し、「ちょうどいい塩梅」を身につけていく。
整頓の管理
PROUD.DEFAULT.SHAMEにもメモしたが、振る舞いを変更するコードとそのために必要なコードの構造を変えるコードは適切な単位で管理し、チームがそのような開発リズムに対応できるよう訓練すれば、整頓に対するレビューコストは非常に安く済む。
整頓の価値
ソフトウェアの価値は、現時点で顧客に提供できる機能がもたらす価値と、将来できるようになるオプションの価値の合計である。では、そのオプションはどのようにして提供されるのか。それはソフトウェアがどれだけ振る舞いの変更に対応できるかどうかである。
ここで「結合」という考え方がある。1つの要素を変更するのに他の要素の変更が必要であれば、その2つの要素は「結合している」と言える。コードの変更とは、言うなればこの「結合」のコストである。
以上を簡潔にまとめると、以下の式になる。
$$ Cost(Software) \cong Cost(変更) \cong Cost(大きな変更) \cong 結合 $$
では結合のコストを下げるためには? 整頓が重要となる、というのが本書の主張
将来に備えた整頓は不確実性が高く、整頓がオプションの価値を上げるかは場合による。しかし、日々の開発における振る舞いの変更には、それぞれ必要な整頓がある。その整頓の積み重ねが、\(Cost(Software)\)を下げ、ソフトウェアのオプション価値を上げることになる。