🍟

Tidy First?

に公開

https://www.oreilly.co.jp/books/9784814400911/

結論:いつ整頓すべきか?

基本的には先にやるべきだが状況による。次の4つの観点で判断。

  • コスト:整頓によって開発・保守コストが下がるか?
  • 収益:整頓によって収益が上がるか?また、その獲得が早くなるか?
  • 結合:整頓によって結合を減らせるか?
  • 凝集:整頓によって凝集度が高まるか?

つまり整頓のタイミングは整頓にかかるコストに対して、どれくらいの経済的構造的効果が見込めるかによって変わってくる

明日もらえる1ドルより今日もらえる1ドルの方が価値が高いという「時間価値」の考え方や振る舞いの変更のしやすさを表す「オプショナリティ」が重要な概念として紹介されていた(経済用語らしい)

整頓する際の注意事項

  • 整頓は連鎖する
    整頓は連鎖的にどんどんやりたくなってしまうのでやりすぎに注意

  • 整頓の適性サイズ
    「数分〜1時間」で完了できるものにする

  • 整頓は分けて行う
    振る舞いに関する変更と構造に関する変更はPRを分ける

その他記憶に残ったところ

  • ソフトウェア開発のコスト=結合
    1. ソフトウェアのゴールはコストを最小化すること(=価値を最大化すること)
    2. ソフトウェア開発のほとんどがメンテナンスに費やされており、 最もコストがかかるのが結合したシステムの変更である
    3. つまり、ソフトウェア開発のコスト=結合と言える
  • 結合vs分離
    1. 結合はコストが高くつくが、分離すればするほどいいっていうわけでもない
    2. トレードオフがあるのでいい塩梅を見極める

感想

  • まどろっこしい表現多いなぁと思いつつ、この表現いいなwって思うものもいくつかあった
  • 特に「整頓はソフトウェア設計のプリングルスのようなものだ」は喰らった
  • 「ソフトウェア設計は人間関係のエクササイズである」の意味は最後まで全然わからなかった
  • 各章が短いのは読みやすくてグッド
  • 抽象的な表現を積み重ねることによって、ソフトウェア開発の本質に迫っていくみたいなアプローチが面白いなと感じた
  • 実践的なテクニックが身についたわけではないが、総じて読んでよかった
GitHubで編集を提案

Discussion