🐈

Tidy First? 第II部 / 第III部を読む

2025/02/09に公開

今回は Tidy First? の第II部 / 第III部について、解釈をまとめます。
https://www.oreilly.co.jp/books/9784814400911/

全体

リファクタリング(整頓)をいつすべきか?どうすべきか?という内容。

整頓の方法

プルリクエスト(PR)の出し方

  • PRは整頓専用にし、機能変更のPRと混ぜない。
  • 整頓 = 構造の整頓 と 機能の整頓 → これらは分けてPRを作成する。

進め方

  • 整頓は小さく進めるべし。速く大きく変更しようとしない。
  • 整頓の作業は1時間目安で区切るべし。
  • 途中で訳わからなくなったら、一度作業をリセットしてやり直すべし。
  • どれだけ整頓を続けるかは、整頓のメリットとデメリットの分岐点を狙うべし。

整頓する/しない

  • 今後コードを書き直す可能性がない場合は、整頓の必要がない
  • コストを下げるために、整頓をする
  • 不可逆的なものは整頓して、可逆的な状態にする = 元に戻しやすい構造にしておく
  • 元々可逆的な構造であれば、整頓は不要

整頓のタイミング

整頓 → 機能開発

  • 同じ領域を再び変更する予定がある場合
  • 整頓を「今」した方がコストが低い場合 (理解, 修正が早くなる場合)

※金融におけるオプション
「システムの不確実性が高いほど、システムの価値が高い」という見方

分かりやすい↓

https://x.com/Panda_Program/status/1878398556538912874

機能開発 → 整頓

  • 同じ領域を再び変更する予定がない場合
  • 整頓しても変更が簡単にならない場合
  • 整頓に自信がない場合

※金融における時間価値
「まずはシステムの価値を生み出すことが、システムの価値が最大になる」という見方

分かりやすい↓
https://zenn.dev/ganariya/articles/tidy-first-ganyariya-thoughts#時間価値の意味について

時間価値が伝えたいことは 今もらえる 1 万円のほうが 1 年後の 1 万円よりも価値を持つ だと考えています。
現時点においてお金を持っていれば投資やギャンブルなど、好きに使ってお金を増やせます。
しかし、未来については本当にお金を貰えるか怪しいですし、使える期間も限られます。

結合 と 分離

  • 1つの要素の変更が、他要素に関わる = 結合している状態
  • この場合1箇所の修正により、予期せぬデグレを引き起こす可能性がある
  • 結合を減らすべしだが、結合を0にすることは途方も無いことである。

結合にどう向き合うか?

結合している要素 / 結合していない要素があった場合

  • 案1:結合している要素は、共通部分をまとめる。
  • 案2:結合していない要素を別箇所に移動し、結合している要素のみにする

まとめ

リファクタリングについては

  • 小さく進める
  • とにかくコストを最小限に抑える、という意識を持ってタイミングを決める
  • やみくもに進めず、計画的に進めるべし

関連記事

https://zenn.dev/koda_momo/articles/c2fde8ea7260e3

Discussion