📌

『良いコード/悪いコードで学ぶ設計入門』を読んで

2023/03/10に公開

https://gihyo.jp/book/2022/978-4-297-12783-1

『良いコード/悪いコード』中に出てきた単語で、覚えておきたいと思った言葉をまとめておく。
こういった単語を整理しておくことは、エンジニア間での会話の潤滑油としても、自分の思考を滑らかにする意味でも重要だと思ったので。

木こりのジレンマ


File:TirolerAxt.jpg

概要

  • 刃こぼれした斧で木を切る木こりに対し、旅人が「刃を研げば楽に切れる」と言ったところ、「刃を研ぐ時間なんかない」と返された、という説話から
    • イソップ寓話『木こりと旅人』の一節が元ネタらしい
  • 開発の現場でも同様で、「木を切る時間」を実装工数に、「刃を研ぐ時間」を設計工数に置き換えられる(『良いコード/悪いコードで学ぶ設計入門』より)

考えたこと

  • 実装と設計以外にも、ショートカットを覚える、VSCodeの拡張機能を使う、定型業務をツール化しておくなど、業務全般に対して使える考え方だと思った
    • もちろん、木を切る動作を覚える時間も重要。徐々に斧(環境)を整える方にシフトするというのが良いのではないか

連番命名


みんな大好き連番命名

概要

  • 読んで字の如く、番号付けで命名すること
  • 連番をやめると秩序が乱れるという点で悪質
  • ミノ駆動本では、目的駆動名前設計が推奨されている

経験から

  • 連番命名をしてしまうと、連番とその機能を照合するためのファイルが必要になる(しかも、改修のたびに保守が必要)
  • 採番に際して、競合を気にする必要が出てくるのが本当に良くない

驚き最小の原則


File:The Wonder of a Book (Unsplash).jpg

概要

  • 予想外の挙動が最小になるように設計する考え方
  • ミノ駆動本では、「itemCountメソッドに、ポイントを追加するべきかの判定ロジックを追加してはいけない」といったことが示されている

みんな困っている

https://qiita.com/tatesuke/items/36924274f043f37a391f

  • 上記記事では、Javaでスネークケースを使うことや、先に挙げた連番命名も例としてあげられている
  • 個人的な経験としては、メソッドが名詞始まり/変数が動詞始まりのような記法も驚かされた覚えがある
  • 結局のところ、「コードは他人が読むもの」を守らないことに起因すると思った

Discussion