美しいプログラム

実装が美しいけどツカエないプログラムと、実装は醜いがツカエるプログラムとどちらがよいかといえば、後者の方に決まっている。もちろん実装も美しくかつツカエるプログラムというのもありで、プログラマーは皆それを目指しているのだけど、プログラマー側の美と、ユーザー側の美と、どちらかの選択を迫られたら、迷わず後者をとるのが私にとっての美しいプログラマーの定義だ。

私は最近思うようになった。ソースコードがよりシンプルである事。使いやすい関数を作ったとして、それが誰かに読みやすいか。読みづらくなることはある。だから、コメントが必要になるし。コメントが必要だから、穢れているとは言えない。
目的に対して、最適な手段をもって書かれていることを美しく感じる。APIなら、提供される側のことを考えてそれに対して最善だと思われるAPIを提供するように実装する。
今後の拡張のことを考えて、関数を用意する。いくらでもある。でも、複雑にメソッドを呼び出したり、いたづらに簡略化した名前をつけても、分かりづらさが増す場合もある。
目的や、意図がはっきりしており、それに対する最善の解決策を考えた上でのプログラム。私はそれが美しいと思うし。私の目指すものだと思う。
だから、デザインパターンとか好きなのかもしれないなぁ。ああ、でもあれは実装ってより設計か。