一般的な名前付け規約

すべての名前空間,クラス,構造体,パラメタなどは,後述の規則に従って付与すること.

使用する文字

define で定義されたマクロ以外は,すべて小文字英数,数字,アンダースコアで記述すること.

種別使用できる文字
マクロA-Z, 0-9, _(アンダースコア)MAX_VIRTUAL_SERVERS
変数a-z, 0-9, _(アンダースコア)keyword
関数a-z, 0-9, _(アンダースコア)run_thread
クラス名a-z, 0-9, _(アンダースコア)logger
列挙型/列挙子a-z, 0-9, _(アンダースコア)log_level

複合語の扱い

複合語(たとえば password,scoreboard など,一般的な辞書に掲載されているもの)は単一の単語として扱う.

注意: filename,username などは複合語ではない.user_name,file_name などと記すこと.

例)

  1. // Bad -- 「score_board」というキーワードでないと検索できない.
  2. // このソースでは「score」と「board」は別単語として扱われていることを知っておく必要がある.
  3. std::map<int, char*> score_board;
  4. int score_board_index;
  5. // Nice -- 「socreboard」というキーワードで検索できる.
  6. // 一般的な英語の知識があれば良い.
  7. std::map<int, char*> scoreboard;
  8. int scoreboard_index;

省略形の禁止

省略された単語は本来の意味を理解する妨げとなるため,必ず全体を記述すること.

例)

  1. // Bad -- wd が何を示すか不明瞭である.
  2. std::string passwd;
  3. // Nice -- パスワードであることが明確である.
  4. std::string password; // Nice

ハンガリー記法の禁止

ハンガリー記法は命名時に型を拘束するため,これを禁止する.

例)

  1. // Bad -- sz は,String terminated by Zero の略.
  2. //「NULL ターミネートされたキーワードを示す文字列である」ことを永続的に拘束する.
  3. char* szKeyword = "The Keyword";
  4. // Nice -- 「キーワードである」という変数の意味のみを拘束する.
  5. // 後に独自のクラスに置き換える場合も,変数名に影響は少ない.
  6. char* keyword = "The Keyword";