ikautak.log

C/C++, Python, CUDA, Android, Linux kernel, Network, etc.

More Effective C++ 項目32 未来形でプログラムしよう

新訂版 More Effective C++ (AddisonーWesley professional co)

新訂版 More Effective C++ (AddisonーWesley professional co)

  • 作者: スコット・メイヤーズ,安村通晃,伊賀聡一郎,飯田朱美,永田周一
  • 出版社/メーカー: ピアソンエデュケーション
  • 発売日: 2007/06/29
  • メディア: 単行本(ソフトカバー)
  • 購入: 8人 クリック: 129回
  • この商品を含むブログ (43件) を見る

項目32 未来形でプログラムしよう

32~35は雑記の章。

変化を優雅に受け入れるソフトウェアは、「未来形でプログラム」する人々によって書かれている。

新しいオーバーロードが起こり得ること、新しいクラスが階層に加えられること、今日の派生クラスが明日には基底クラスになるかもしれないこと、未来に起こりそうなことに備えておくことを認識しておく。

コメントやドキュメントではなく、C++で設計の制約を表現すること。
派生クラスを持たないようにしたい、スタック上に生成できないようにしたい、コピーや代入を制限したいなど。

驚き最小化の法則に従う。
演算子や関数が自然な構文と直感的なセマンティクスを持つようなクラスを提供する。

変化がやむを得ないときは、その影響を一部に留めることができるように設計すること。
カプセル化、すなわち実装の詳細を非公開とする。無名名前空間、ファイル内staticを用いる。

もし現在使われていない部分があったとしても、完全なクラスを提供する。
操作が共通になるようにインターフェースを設計して、正しく使うのが容易で、間違って使うことを難しくする。
コードを一般化することが大きく不利にならなければ、一般化する。

未来形で考えることで、コードの再利用性を高め、保守を容易にし、より堅固にし、変化も容易にする。
現在形の制約とバランスをとる。