ほげたつブログ

プログラムとアニメーションをかじって生きてる

プログラムの設計はシンプルに

会社でプログラムの設計に関して相談を受ける機会が増えてきた。
ちょっとアレな設計になっているものの大半は複雑に考え過ぎていたり、道理に適っていない事が多い。
設計というものはもうちょっとシンプルに考えていいと思う。
オブジェクト指向なんて難しく言っているけど、日常に存在するもので考えると簡単だったりする。


例えば目玉焼きを作るとする。


まず必要なものは「卵」。
卵は普通の安い卵かもしれないし、ヨード卵・光かもしれない。
しかし完成した目玉焼きの味に違いはあれど、「目玉焼きを作る」という目的であれば何の卵であろうと関係ない。
ただし、それが結果的に目玉焼きにならないのであれば、それは卵ではない。
「ヨード卵 is 卵」だけど、「トム is 卵」ではない。
トムをどう調理したって目玉焼きにはならない。


次に必要なのは「熱」。
熱は卵を目玉焼きに変える。
しかし熱は魚を素材とすると焼き魚に変えるし、トムを素材とすると焼死体に変える。
与えられたものによって振る舞いを変えるので、何も卵専用のものではない。


卵はあくまで卵であって、それ単体で目玉焼きにはなれない。
(そんな卵、道理に反している。)


「目玉焼きを作る」という目的であれば、これ以上の工程は必要ない。
これ以上の工程を入れても複雑になるだけだ。


目的が「目玉焼きを作る」ではなく「美味しい目玉焼きを作る」というものに変わるのであれば、その時にヨード卵・光を使えばいい。
トムへの嫌がらせの為に不味い目玉焼きを作りたいのであれば、腐った卵を使えばいい。


何を作りたくて、そのために何が必要なのかを考えれば、シンプルに組み上げられるんじゃないかな。