NISHIO Hirokazu[Translate]
複数の目的に使えるコードの罠
ソフトウェアを作っていると「これは目的Aにも目的Bにも使えるぞ」と思う時がある。

複数の目的に使えることは、一つの目的に使えることよりも優れている。
目的Aにしか使わない人はBのための機能を単に無視するだけなので。
無視することができない(メニューがゴチャゴチャする、ボタンだらけになって操作方法が難しくなる、など)ときにはそうともいえない

しかし「一つの目的に使える」が達成されていない状態で、複数の目的に使えることを目指すと良くない。
図で、斜線の部分が既に実装したコードだとする
目的Aを達成するのにはxを実装するのが最優先
しかしxは目的Bには役に立たない
目的Bを達成するのにはzが最優先
目的Aには役立たない
複数の目的を目指している場合
どちらの目的でも有用なyを優先して実装してしまう
これは目的が曖昧なせいで、どの目的にもまっすぐ進んでない
どちらの目的も達成が遅れる
ゲームを作らずにゲームライブラリを作ってしまうあるあるパターン
一つのゲームを完成させないまま、色々なものに使えそうなライブラリコードばかり使ってしまう
「一番重要なユーザーストーリーを決めて、その達成を目指す」という開発方法がオススメされるのは、この目的迷子に陥ることを防ぐため


関連
手段の目的化の対抗策を書いてる時に思いついた

"Engineer's way of creating knowledge" the English version of my book is now available on [Engineer's way of creating knowledge]

(C)NISHIO Hirokazu / Converted from [Scrapbox] at [Edit]