EffectiveC++ チェックリスト

更新:2013/2/04



・できてるはず
01 #defineではなく、constとinlineを使おう
02 stdio.hではなく、iostreamを使おう
03 mallocとfreeよりも、newとdeleteを使おう
04 コメントはC++スタイルで書こう
05 newとdeleteのペアは同じ形式に揃えよう
12 コンストラクタでは、代入よりも初期化を使おう
15 operator=を書くときは、*thisへのリファレンスを返そう
20 データメンバをpublicインタフェースに入れるのはやめよう
23 オブジェクトを返さなければならないときに、リファレンスを返そうとがんばるのはやめよう
24 関数のオーバロードとデフォルトつきパラメータは、慎重に使い分けよう
25 ポインタと数値型とにオーバロードするのは避けよう
27 暗黙のうちに生成される不要なメンバ関数は、明示的に使用を禁止しよう
29 内部データの「ハンドル」を返すのはやめよう
30 メンバ関数は、自分よりもアクセス制限がきついメンバへの非constポインタや参照を返さないようにしよう
31 関数は、ローカルオブジェクトへのリファレンスや関数の中でnewで初期化したポインタの参照先を返してはならない
32 変数の定義は、できるだけ後回しにしよう



・たまに忘れる
06 デストラクタでポインタメンバにdeleteを使うのを忘れないようにしよう
  http://skru-y.hatenablog.com/entry/2013/10/27/141806
12 初期化リストのメンバは、宣言した順に並べよう
  http://skru-y.hatenablog.com/entry/2013/11/21/EffectiveC%2B%2B%E3%82%92%E8%AA%AD%E3%82%80_13%E9%A0%85
21 使えるときは、必ずconstを使おう
  http://skru-y.hatenablog.com/entry/2014/01/24/EffectiveC%2B%2B%E3%82%92%E8%AA%AD%E3%82%80_21%E9%A0%85_
22 値渡しよりも、リファレンス渡しを使おう
  http://skru-y.hatenablog.com/entry/2014/01/26/EffectiveC%2B%2B%E3%82%92%E8%AA%AD%E3%82%80_22%E9%A0%85
26 潜在的な多義性に対するガードを固めよう
  http://skru-y.hatenablog.com/entry/2014/01/27/26%E9%A0%85_%E6%BD%9C%E5%9C%A8%E7%9A%84%E3%81%AA%E5%A4%9A%E7%BE%A9%E6%80%A7%E3%81%AB%E5%AF%BE%E3%81%99%E3%82%8B%E3%82%AC%E3%83%BC%E3%83%89%E3%82%92%E5%9B%BA%E3%82%81%E3%82%88%E3%81%86
33 関数はよく考えてからインライン化しよう
  http://skru-y.hatenablog.com/entry/2014/02/01/34%E9%A0%85_%E9%96%A2%E6%95%B0%E3%81%AF%E3%82%88%E3%81%8F%E8%80%83%E3%81%88%E3%81%A6%E3%81%8B%E3%82%89%E3%82%A4%E3%83%B3%E3%83%A9%E3%82%A4%E3%83%B3%E5%8C%96%E3%81%97%E3%82%88%E3%81%86



・わすれがち
11 メモリを動的に割り当てるクラスでは、コピーコンストラクタと代入演算子を宣言しよう
  http://skru-y.hatenablog.com/entry/2013/11/17/EffectiveC%2B%2B%E3%82%92%E8%AA%AD%E3%82%80_11%E9%A0%85
16 operator=では、全てのデータメンバに代入しよう
  http://skru-y.hatenablog.com/entry/2013/12/25/EffectiveC%2B%2B%E3%82%92%E8%AA%AD%E3%82%80_16%E9%A0%85
19項 メンバ関数、非メンバ関数、friend関数を使い分けよう
  http://skru-y.hatenablog.com/entry/2014/01/09/EffectiveC%2B%2B%E3%82%92%E8%AA%AD%E3%82%80_18%E9%A0%85
28 グローバルな名前空間は分割しよう
  http://skru-y.hatenablog.com/entry/2014/01/27/28%E9%A0%85_%E3%82%B0%E3%83%AD%E3%83%BC%E3%83%90%E3%83%AB%E3%81%AA%E5%90%8D%E5%89%8D%E7%A9%BA%E9%96%93%E3%81%AF%E5%88%86%E5%89%B2%E3%81%97%E3%82%88%E3%81%86



・全くやってない
07 メモリ不足に備えよう
  http://skru-y.hatenablog.com/entry/2013/10/29/165024
08 operator newとoperator deleteを書くときは規約を守ろう
  http://skru-y.hatenablog.com/entry/2013/10/31/123519
09 普通の形式のnewを隠蔽しないように注意しよう
  http://skru-y.hatenablog.com/entry/2013/10/31/140550
10 operator newを書くなら、operator deleteも書こう
  http://skru-y.hatenablog.com/entry/2013/11/03/EffectiveC%2B%2B%E3%82%92%E8%AA%AD%E3%82%80_10%E9%A0%85
14 基底クラスには仮想デストラクタを持たせよう
  http://skru-y.hatenablog.com/entry/2013/12/25/EffectiveC%2B%2B%E3%82%92%E8%AA%AD%E3%82%80_14%E9%A0%85_
17 operator=では、自分自身へ代入するケースをチェックしよう
  http://skru-y.hatenablog.com/entry/2013/12/25/EffectiveC%2B%2B%E3%82%92%E8%AA%AD%E3%82%80_17%E9%A0%85
34 コンパイルするファイル間の依存性はできるだけ減らそう
  http://skru-y.hatenablog.com/entry/2014/02/02/34%E9%A0%85_%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E3%83%AB%E3%81%99%E3%82%8B%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E9%96%93%E3%81%AE%E4%BE%9D%E5%AD%98%E6%80%A7%E3%81%AF%E3%81%A7%E3%81%8D%E3%82%8B%E3%81%A0



・不明
18 クラスインターフェイスが完全かつ最小限になるまで頑張ろう