抽象と単純の度合い

アインシュタインの言葉はプログラミングの設計にも当てはまると思った。

"everything should be made as simple as possible, but no simpler"

「物事は可能な限り単純化されるべきである。ただし、それ以上単純にしてはいけない。」

シンプルの定義は人によって違うと思うが、例えば私の考えでは、フォルダ名やフォルダ構成やソースファイル名やコードの中身やコメントを見て一瞬で処理やデータ構造の概要を把握できるレベルにしておくことだと思う。


後で見直してすぐに何を意味しているのか分からないというのは、単純化の度合いが足りないのだと思う。つまりもっと抽象化すべきということをあらわしていると思う。


高レベルな言語では、より短いコードでより多くの情報が書けるが、可能な限り単純化すべきという考えは変わらない。ある意味、高レベルな言語のライブラリはどういうように抽象化すべきかの手本とも言えると思う。また、汎用的な部分はすでにライブラリとしてすぐに分かりやすい形で抽象化されているので、その部分は実装しなくて良いので、開発効率が高いだけでなく敷居が低いとも言えると思う。

  • 追記(2009/5/28)

トップレベルレイヤーの業務ロジックの部分はこの通りでないと思う。つまりソースを見て一瞬で分かるというレベルにはならないと思う。だから仕様書が重要になってきて、それである程度カバーする必要があるのだと思う。しかし内容を理解するには、どうしてもソースを読む必要は出てくると思う。