複数の目的に使えるコードの罠
https://gyazo.com/d9ce4b145beea57403ea07ee3815c956
ソフトウェアを作っていると「これは目的Aにも目的Bにも使えるぞ」と思う時がある。
複数の目的に使えることは、一つの目的に使えることよりも優れている。
目的Aにしか使わない人はBのための機能を単に無視するだけなので。
無視することができない(メニューがゴチャゴチャする、ボタンだらけになって操作方法が難しくなる、など)ときにはそうともいえない
しかし「一つの目的に使える」が達成されていない状態で、複数の目的に使えることを目指すと良くない。
図で、斜線の部分が既に実装したコードだとする
目的Aを達成するのにはxを実装するのが最優先
しかしxは目的Bには役に立たない
目的Bを達成するのにはzが最優先
目的Aには役立たない
複数の目的を目指している場合
どちらの目的でも有用なyを優先して実装してしまう
これは目的が曖昧なせいで、どの目的にもまっすぐ進んでない
どちらの目的も達成が遅れる
二兎を追う者は一兎をも得ず
ゲームを作らずにゲームライブラリを作ってしまうあるあるパターン
一つのゲームを完成させないまま、色々なものに使えそうなライブラリコードばかり使ってしまう
「一番重要なユーザーストーリーを決めて、その達成を目指す」という開発方法がオススメされるのは、この目的迷子に陥ることを防ぐため
複数の目的
目的
関連
手段の目的化の対抗策を書いてる時に思いついた