比較バージョン

キー

  • この行は追加されました。
  • この行は削除されました。
  • 書式設定が変更されました。

...

  1. 大域スコープのシンボルは作らない(必ず名前空間を使う)
  2. ヘッダでは using 禁止
  3. cpp ファイルでは無名名前空間でローカルシンボルをくくる
    C では static でしたが、C++ では無名名前空間を使うのがスマートです。

    コード ブロック
    cpp
    cpp
    const int CONSTANT = 3;     // const はデフォルトでファイルローカルスコープ
    
    namespace {          // 無名の名前空間
    
    void do_something() {       // 無名名前空間の名前は他のコンパイル単位からは参照不可能
    }
    
    }
    
    int main(int argc, char** argv) {  // main は見えるようにする
      do_something();
      return 0;
    }
    
  4. C ライブラリも std 名前空間へのラッパーを極力使う
    c.f. http://www.cplusplus.com/reference/clibrary/

    コード ブロック
    cpp
    cpp
    #include <cerrno> <cstddef>  // std::errnosize_t など
    
    #include <cstddef><cstdlib>  // std::malloc, std::size_tfree など
    

    ※2013-12-27 std::errno は存在しないので修正しました

警告は必ずなくす

C++ 以外にも言えることですが、コンパイラはの警告は 0 にしておきましょう。放置すると、深刻なものも見逃します。
g++ なら -Wall -Wnon-virtual-dtor -Woverloaded-virtual をつけるのを推奨します。

...