C++コーディングパターン

1. virtual destructor
destructorは継承される可能性があるなら必ずvirtualをつける。

2. compoundするとaccessorが大変なことになる問題。(m_algorithm.getData(i))->at(j)なんてやってられない。
(a) 参照一時変数に取っておいて、名前をわかりやすくして参照する。
(b) at(i, j)みたいなものを定義してやる。
のどちらかで解決する。

3. 副作用がインスタンスを生成する場合
(a) 副作用がインスタンスを生成するのを見過ごして、関数とデストラクタで責任を持つ。
(b) 生成するインスタンスを管理するクラスを作って、そのクラスの実体メンバ変数を用意し、副作用を実体への書き込みにする。
(c) 生成するインスタンスを呼び出し元に返してしまい、それをパラメータとして使うようにお願いする。

4. namespaceとstatic member functionについて
namespaceは宣言をファイルで分割出来る。static member functionは継承状態を利用できる。
汎用的なツールはnamespaceに突っ込んで置いた方がよい。(e.g. include OpenGL)