アットウィキロゴ

C++の自分用コーディング標準まとめ

自分用の注意書き。
そんなに変ではないと思います。

インタフェースの宣言まわり


値渡しの引数の関数宣言にconstはつけない

コンパイラは関数宣言の値渡し引数のconstの有無にかかわらず同じシグネチャとみなす。なので値渡し仮引数にはconstは付けない(わかりやすさ>堅牢性)。
void f(int n);
...
void f(const int n) {
  // nは変更不可
}

組み込み型を返すときはconstをつけない。組み込み型以外なら必要なければ必ずconstをつける

組み込みは返ったのが右辺値になるから意味がないしテンプレート実体化の邪魔になるらしい。
TODO 例

コンストラクタは必要なければ必ずexplicitを指定する

TODO 例

メンバ関数はオブジェクトの内容をクライアントから見て変化させない(と思って不自然でない)なら必ずconstにする

インタフェースは分かりやすく、かつ堅牢に実装できるようになる。内部でなんらかのキャッシュをしたりする場合はそのメンバはmutableにする
MyClass {
private:
  mutable int length;
public:
  int getLength() const {
    // TODO 例
  }
};

SVN関連

以下の命名規則はSubversion実践入門から引用。追加、変更有り

タグの命名規則

  • 開発用バージョンタグ: TAG-description
    • TAG-default, TAG-finish-subject1
  • リリースタグ: REL-rel
    • REL-1.0 REL-1.0.1a
  • バグ修正前タグ: PRE-track
    • PRE-3035, PRE-10871
  • バグ修正後タグ: POST-track
    • POST-3035, POST-10871

ブランチの命名規則

  • リリースブランチ: RB-rel
    • RB-1.0, RB-1.0.1a
  • バグ修正ブランチ: BUG-track
    • BUG-3035, BUG-103871
  • 開発者の実験ブランチ: TRY-initials-desc
    • TRY-MGM-chache-pages, TRY-MR-neo-persistence

参考文献

  • Effective C++
  • Exceptional C++
  • Subversion実践入門
最終更新:2013年11月28日 16:08