本物のC

礼儀作法:命名規則


変数や関数などの名前の付け方について。

あらゆる対象に付けられた名前は、それが何であるかを万人に分かりやすく示す機能的なものであるべきです。

単語選び

「万人」とはそのコードを見る可能性があるあらゆる人々であって、ネット上に公開するのならば外国語話者も当然含まれます。故に命名は英語でするのが大原則です。

小説か何かを書く訳ではないのですから、凝った表現などせずに簡明な表現を用います。どちらかと言うと学術論文を書く様なもので、お決まりの表現を持って来ればよいのです。

例えば動詞では以下の様な表現が一般的ですが、言語によって多少の傾向性もあるので、ライブラリ関数や他人のコードなどを眺めてみるとよいでしょう。

操作 単語
取得 get
設定 set
追加 add, append
削除 delete, remove, destroy
読み込み read, load
初期化 init, initialize
抹消 clear
開始 begin, start, enter
終了 end, exit

単語の繋げ方

あるものの役割を表す単語列を選んだら、それらを繋げて一つの名前にするのですが、繋げ方には幾つかの流儀があります。

snake_case
単語は基本的に小文字で書き、その間をアンダースコア_で繋ぎます。
camelCase
小文字で書き始めて、単語同士の境目では後の単語の最初を大文字にする。
PascalCase
それぞれの単語の最初を大文字にする。

いずれにせよ単語の境界は明確にし、十分に一般的な場合以外での略記は避けるべきです。C のatoiだのprintfだのという名前はその悪い例でしょう。

複数の流儀を気紛れに切り替えてもコードが読み難くなるだけですが、グローバルな識別子は camelCase でローカルな識別子は PascalCase にする、という様な使い分けは実践でも有効です。

これも言語によって異なる習慣があり、C や C++ などでは snake_case がよく使われる一方で、Java や C# などは camelCase と PascalCase の併用が一般的です。

また C の場合、マクロの名前は大文字をアンダースコアで繋いで作るのがほぼ鉄則となっています。(これはSCREAMING_SNAKE_CASEと呼ばれる様です。)