📌
『良いコード/悪いコードで学ぶ設計入門』を読んで
『良いコード/悪いコード』中に出てきた単語で、覚えておきたいと思った言葉をまとめておく。
こういった単語を整理しておくことは、エンジニア間での会話の潤滑油としても、自分の思考を滑らかにする意味でも重要だと思ったので。
木こりのジレンマ
概要
- 刃こぼれした斧で木を切る木こりに対し、旅人が「刃を研げば楽に切れる」と言ったところ、「刃を研ぐ時間なんかない」と返された、という説話から
- イソップ寓話『木こりと旅人』の一節が元ネタらしい
- 開発の現場でも同様で、「木を切る時間」を実装工数に、「刃を研ぐ時間」を設計工数に置き換えられる(『良いコード/悪いコードで学ぶ設計入門』より)
考えたこと
- 実装と設計以外にも、ショートカットを覚える、VSCodeの拡張機能を使う、定型業務をツール化しておくなど、業務全般に対して使える考え方だと思った
- もちろん、木を切る動作を覚える時間も重要。徐々に斧(環境)を整える方にシフトするというのが良いのではないか
連番命名
みんな大好き連番命名
概要
- 読んで字の如く、番号付けで命名すること
- 連番をやめると秩序が乱れるという点で悪質
- ミノ駆動本では、目的駆動名前設計が推奨されている
経験から
- 連番命名をしてしまうと、連番とその機能を照合するためのファイルが必要になる(しかも、改修のたびに保守が必要)
- 採番に際して、競合を気にする必要が出てくるのが本当に良くない
驚き最小の原則
File:The Wonder of a Book (Unsplash).jpg
概要
- 予想外の挙動が最小になるように設計する考え方
- ミノ駆動本では、「itemCountメソッドに、ポイントを追加するべきかの判定ロジックを追加してはいけない」といったことが示されている
みんな困っている
- 上記記事では、Javaでスネークケースを使うことや、先に挙げた連番命名も例としてあげられている
- 個人的な経験としては、メソッドが名詞始まり/変数が動詞始まりのような記法も驚かされた覚えがある
- 結局のところ、「コードは他人が読むもの」を守らないことに起因すると思った
Discussion