迷い

プログラムを書いていると大抵どこかに「迷い」にぶち当たります。ああするべきか、こうするべきか・・・と悩むわけですが、結局コードに書かれるのはいくつかの選択肢の中から自分の選択したものしか書かれないわけです*1

これらの「迷い」がメソッドに数行で表されるものもあれば、別途ドキュメントを書かなければならない場合もあります。

僕はコメントを書くのが苦手だし、コメントが必要ないクラスのほうが読みやすいと思うので(そうは言っても書かなければならない場合が多いのですけど)、できればコメントで、迷いを表現するのは避けたい。もっと本質的に表現したい、と思うこともしばしばあります。例えば上記のDAOは、そういう迷い(の一部分)を表現できていると思うので、いい感じだなーと思います。

インタフェースと実装クラスが1対nであるように、デザインにせよ実装にせよ、「やりたいこと」とその実現方法は1対nの関係にあります。n個ある実現方法のうち、実装されるのは大抵1つだけなので、残りのn-1は使われないことが多いと思います。


このn-1をどうにかうまく残せないか、CVSでブランチを作るんじゃなくて、なんかもっとこう本質的で明示的な何かで残せないか・・・・なんてことを考えてました。

でも、なぜ迷いを表現したいかと言えば、誰か(例えばプロジェクトに後から入ったメンバー)に伝えるためであり、誰かに伝えることが目的なら、その場で説明したほうがきっとほとんどの場合早いのかなと思ったりします。迷いをうまく表現することのほうがコストが高そうな気もしてきました。

*1:昔後輩に「設計とは決めることだ」と言い切って、伝わらなかったことがあったんですけど、そのときにはこういう「迷い」という前提が伝わってなかったんだなーと思います