今日からできる!Googleコード規約!

Google C++スタイルガイド日本語訳
を参考にしました。
その中から私が理解したもの、
いいなと思ったものだけを紹介します。

  • 関数の引数の書き方
f(hoge, foo, var)

左右の括弧と変数の間にスペースをはさまないこと。

  • 定数にはkを先頭につける
const int kDaysInAWeek = 7;

何のkだろう?(追記:konstant)

  • クラス名はキャメルケース
class HumanBody {
  ...
};

ラクダのこぶのように。

  • メソッド、関数は大文字からはじめる
void MyFunction();
  • 変数名は小文字とアンダーバー
float my_variable;
  • 列挙子には大文字とアンダーバー
enum color {
  RED_COLOR,
  GREEN_COLOR,
  BLUE_COLOR
};

この命名法で定数と列挙子も区別している?

  • 定数、メソッド、クラス変数の順に書く
const int kFixNum = 10;
void MyFunction(int a);
int class_variable_;

今まで定数、変数、関数の順で書いていたので、直す。

  • 10行以下の関数はインライン関数にしてヘッダファイルに書く
inline int MyFunc(int a){
  return a;
}

短いのだからヘッダファイルで定義してOK.

  • インデントはスペース2つ
while(1){
  cout << "infinity" << endl;
}

スペース4つより見やすいと思うので賛成。

  • 関数へのコメントは、宣言(.h)で使い方、定義(.cc)で処理について書く。
  //使い方のコメントなのか、処理についてのコメントなのか区別しましょう
  • C++の拡張子は.cppではなくて.ccとする
g++ hoge.cc
  • ファイル名はすべて小文字
my_first_test_code.cc

ファイル名に大文字が入ってくると文字の高さが安定しないので賛成。

  • クラスメンバ変数の最後にアンダーバー
class Human {
 private:
  int var_;
}
  • クラスメンバ変数へのアクセサの書き方
int a = my_human.var(); //get
my_human.set_var(3);    //set

メンバ変数の名付け方が効いている。

  • public, protected, privateの順で、スペース1つ
class Human {
 public:
  ...
 protected:
  ...
 private:
  ...
};


参考:Google C++スタイルガイド日本語訳