🐈
Tidy First? 第II部 / 第III部を読む
今回は Tidy First? の第II部 / 第III部について、解釈をまとめます。
全体
リファクタリング(整頓)をいつすべきか?どうすべきか?という内容。
整頓の方法
プルリクエスト(PR)の出し方
- PRは整頓専用にし、機能変更のPRと混ぜない。
- 整頓 = 構造の整頓 と 機能の整頓 → これらは分けてPRを作成する。
進め方
- 整頓は小さく進めるべし。速く大きく変更しようとしない。
- 整頓の作業は1時間目安で区切るべし。
- 途中で訳わからなくなったら、一度作業をリセットしてやり直すべし。
- どれだけ整頓を続けるかは、整頓のメリットとデメリットの分岐点を狙うべし。
整頓する/しない
- 今後コードを書き直す可能性がない場合は、整頓の必要がない
- コストを下げるために、整頓をする
- 不可逆的なものは整頓して、可逆的な状態にする = 元に戻しやすい構造にしておく
- 元々可逆的な構造であれば、整頓は不要
整頓のタイミング
整頓 → 機能開発
- 同じ領域を再び変更する予定がある場合
- 整頓を「今」した方がコストが低い場合 (理解, 修正が早くなる場合)
※金融におけるオプション
「システムの不確実性が高いほど、システムの価値が高い」という見方
分かりやすい↓
機能開発 → 整頓
- 同じ領域を再び変更する予定がない場合
- 整頓しても変更が簡単にならない場合
- 整頓に自信がない場合
※金融における時間価値
「まずはシステムの価値を生み出すことが、システムの価値が最大になる」という見方
分かりやすい↓
時間価値が伝えたいことは 今もらえる 1 万円のほうが 1 年後の 1 万円よりも価値を持つ だと考えています。
現時点においてお金を持っていれば投資やギャンブルなど、好きに使ってお金を増やせます。
しかし、未来については本当にお金を貰えるか怪しいですし、使える期間も限られます。
結合 と 分離
- 1つの要素の変更が、他要素に関わる = 結合している状態
- この場合1箇所の修正により、予期せぬデグレを引き起こす可能性がある
- 結合を減らすべしだが、結合を0にすることは途方も無いことである。
結合にどう向き合うか?
結合している要素 / 結合していない要素があった場合
- 案1:結合している要素は、共通部分をまとめる。
- 案2:結合していない要素を別箇所に移動し、結合している要素のみにする
まとめ
リファクタリングについては
- 小さく進める
- とにかくコストを最小限に抑える、という意識を持ってタイミングを決める
- やみくもに進めず、計画的に進めるべし
関連記事
Discussion