フリーソフト

« その他のC++の機能 | トップページ | コメント »

命名規則

このドキュメントは、Google C++ Style Guideを翻訳、要約したものです。省略した部分や意訳した部分が多くあります。原文の意図が伝わるよう注意しましたが、誤りが含まれているかもしれません。正確な情報については、必ず原文を参照してください。

前へ | 目次 | 次へ

命名規則

命名規則は一貫性を保つための最も重要なルールである。名前を見るだけで、それが型なのか、変数なのか、関数なのか、定数なのか、マクロなのか、といった情報を即座に伝えることができる。

命名規則は好みによる部分が大きいが、個人の好みよりも一貫性が重要と考える。理にかなっているかどうかではなく、ルールはルールと考えること。

一般的な命名規則

関数名、変数名、ファイル名は記述的に書くこと。省略は避けること。

できるだけ記述的な名前をつけること。名前が長くなってもよい。即座に理解できることの方がはるかに重要である。あいまいな省略形や他のプロジェクトのメンバになじみのない省略形を使用しないこと。単語の途中の文字を削除するような省略形を使用しないこと。

ファイル名

ファイル名はすべて小文字とする。アンダースコア(_)もしくはダッシュ(-)を含んでもよい。どちらを使うかはプロジェクトのルールに従うこと。ルールがない場合はアンダースコアを使うとよい。

C++ファイル名は .ccで終わり、ヘッダライル名は .hで終わること。特定の箇所でインクルードされるようなテキストファイルの名前は .incで終わること。

/usr/includeに存在するファイル名は使用しないこと(例:db.h)。
*_unittest.cc や *_regtest.ccといったファイル名も非推奨。

ファイル名は具体的なものにすること。例えば、logs.hよりもhttp_server_logs.hとした方がよい。クラス名などに基づいたファイル名がよく用いられる。例えば、FooBarクラスを定義するfoo_bar.hとfoo_bar.cc。

「自己完結したヘッダ」も参照のこと。

型名

型名は先頭を大文字とし、各単語の先頭を大文字にする。アンダースコアは使用しない。
例:MyExcitingClass、MyExcitingEnum。

変数名

変数名、データメンバ名はすべて小文字とし、単語間はアンダースコアでつなぐ。クラス(構造体は除く)のデータメンバは名前の最後にアンダースコアをつける。
例:a_local_variable、a_struct_data_member、a_class_data_member_。

グローバル変数は他の変数と簡単に区別できるようg_ などの接頭辞をつけた方がよい。

定数名

定数名は先頭をkとし、各単語の先頭を大文字にする。例:kDaysInAWeek。

ローカルスコープ内の定数は、定数の命名規則に従ってもよいし、通常の変数の命名規則に従ってもよい。

関数名

関数名は先頭を大文字とし、各単語の先頭を大文字にする。アンダースコアは使用しない。アクセッサやミューテータについては変数名の命名規則に従う。
例:MyFunction()、MyMethod()、my_ member_variable()、set_my_member_variable()。

通常の関数

エラーでクラッシュする関数は、関数名の終わりにOrDieを追加する。この規則は、生成コードにおいて使用される関数であり、かつ通常の操作でエラーが発生しうる場合にのみ適用される。例:AddTableEntry()、DeleteUrl()、OpenFileOrDie()

アクセッサとミューテータ

アクセッサとミューテータ(getとset関数)の名前は、対象の変数名に対応するようにつける。例:num_entries_ に対してint num_entries() とvoid set_num_entries(int num_entries)。

非常に短いインライン関数についても小文字名を使用してもよい。

名前空間名

名前空間名はすべて小文字とし、プロジェクト名に基づく名前とする。可能ならディレクトリ構造も反映した名前とする。例:google_awesome_project。

列挙子名

列挙子とはenumの個々の項目を指す。列挙子名は定数名あるいはマクロ名の命名規則に従う。可能なら定数名の命名規則に従うことが望ましい。例:kErrorOutOfMemory = 1あるいはOUT_OF_MEMORY = 1。

マクロ名

通常、マクロは使用すべきでない(「プリプロセッサのマクロ」を参照)。マクロ名はすべて大文字とし、アンダースコアを使用する。例:ROUND、PI_ROUNDED。

命名規則の例外

CやC++にすでに存在する項目と類似したものに名前を付ける場合は、既存の命名規則に従ってもよい。

前へ | 目次 | 次へ

« その他のC++の機能 | トップページ | コメント »

技術文書」カテゴリの記事