虻蜂取らず
具体的な内容は忘れてしまったのだけど僕の実話nishio.icon
「ひらめいた、まずXを実装すれば目的Aにも目的Bにも使えて一石二鳥じゃん!」
→Xの実装を始めてしばらく後→
「あれ、ここの部分の実装、目的AのためにはYにしないといけないけど目的BのためにはZにしないといけないぞ、どうしよう」
何をどう設計すればいいか事前に見通せるくらいの簡単な問題なら「共通部分に見えるもの」も本当に共通部分だから先に実装するのはありだと思う。
一方で、自分にとって難しくて、見通すことができない問題にチャレンジするとき「目的A単体」「目的B単体」に比べて「目的AとBの両立」は複雑なので、事前設計のミスの発生頻度が上がる。
この効果も含めて考えた時に、共通化をやると効率が良いかどうかは一概に言えない。プロジェクトの状況や設計する人の力量などに依存して損得が変わる。
昔書いたものがあった
目的が多次元化する
手段一つに目的が複数
DRYと疎結合のトレードオフ
共通インターフェイスの罠
一方で
いいアイデアは複数の問題を一気に解決する
という話もあって悩ましい
関連
フレームワークの収穫
mitoujr.icon