ソフトウェアを設計するときには一貫性を重視しよう。
理由:一貫性のある設計は理解しやすい
STLが使われるようになって、独自実装のデータ形式よりもはるかに理解しやすくなります。独自仕様のリングバッファよりは、既存の枠組みを使って実装してくれている方が理解するのが楽になります。
独自データ形式をC言語の配列で定義して、メソッドに相当するものを全て自力で実装した時代がありました。
この状況だと、自分でも理解しにくいものになりますし、ましてや他の人にとっては、理解不能なものになってしまいます。
理由:一貫性のある設計はインタフェースがそろいやすい
古くからあるライブラリでも、そのインタフェースを少しずつそろえていこうとする流れがあります。
また、画像認識技術のモジュールを標準化しようとする動きOpenVXがあります。
理由:一貫性のある設計は利用しやすい
理由:一貫性のある設計は無駄なデータ変換を生じない
- [mm]と[cm], [m]の混在は避けるべきです。どの単位を用いているのかわかりにくくなるし、ドキュメンテーションコメントに書いてあったとしても、読まれるとは限りませんし、いつの間にかドキュメンテーションコメントと実装とが乖離していることだっておこります。それよりは、最初から一貫性のある実装をすることです。
理由:一貫性のある設計は矛盾を生じにくい
経験則:一貫性を損なうモジュールを追加したときに、バグを生じやすい。
極力、最近の標準的なライブラリにしたがった流儀にしましょう。
理由:一貫性のある設計は、実装のしかたを間違えたときでも、何が間違いかを気づきやすい。
森で迷ったときに、森の外に出るためには、一貫性のあるやり方で外へ出ようとすることが大事で、「あっちがよかったんじゃないか、いやこっちだ」と右往左往するのは、外に抜け出す目的には適さないように思えます。
物理が好きな人向けの説明
熱力学の第2法則、「ただ一つの熱源から正の熱を受け取って働き続ける熱機関(第二種永久機関)は実現不可能である。」であるという結論に達するためには、それが出来ると信じて試みた死屍累々とした数多くの努力が必要でした。「全ての熱エネルギーを仕事に変換できる」と信じて一貫性のある努力をすることによってのみ、「全ての熱エネルギーを仕事に変換できる」ことが無理なのではないかと気づきえるわけです。
ですから、その手法が無理であると最後には結論付けなければならない場合でも、一貫性をもって設計すべきです。
中途半端な考えでは、「全ての熱エネルギーを仕事に変換できる」のは可能なのか無理なのかいつまでたってもたどりつけないものだったでしょう。