真にエレガントな設計は動作しない
ちょっと前に見たテレビ番組に為末大が出演していて、子どもや後進へアドバイスしている場面が映っていた。
そのときの為末曰く、
走る競技で、”うでを良く振れ”とか”ももを上げろ”というのはナンセンスだ。
走る競技は最終的に早い者が勝つルールなのだから、「速く走る」ことが重要なのであって、身体を振り回すことが目的じゃない。
本当の目的を忘れて、ひたすら「腕を振れ」「ももを上げろ」と教えるのはあまり良くない。
(という内容を意訳した。)
ということらしい。
オブジェクト指向の設計も同じだなあ、と。
名前が重要だとかクラスが重要だとか強調しすぎるせいで、何でもかんでもクラスを作って見通しを悪くしたプログラムが多すぎる。
品質に影響しないなら、クラスは少ない方がいいし、抽象化もしないほうがよろしい。
バカの一つ覚えでインターフェイスを定義するのは、未来についての思考停止だ。
現代のソフトウェアは多かれ少なかれOSとランタイムに依存しており、それらは過去のしがらみを大量に引きずっている。
したがって、真にエレガントな設計は、そういったものと相容れないし、ちゃんと動作することはない。
エンジニアリングの目的は動作するものを作ることであって、ただ美しいだけのものを作ることではないね。