命名の基本
camelCase・snake_case・PascalCaseの使い分け
変数・関数・型の名前をどう書き分けるか。同じ意味の比較例から、既存コードや外部APIに合わせて命名形式を選ぶ手順を説明します。
英単語が決まっても、単語の区切り方で迷うことがあります。名前の形は好みだけで選ばず、使う言語、名前の役割、周囲のコードの順に確認すると揃えやすくなります。ここでは「顧客の表示名」を例に、形を変えてよい場面と、変える前に確認したい場面を整理します。
まず、3つの形の違いを知る
camelCaseは最初の単語を小文字で始め、後続の単語の先頭を大文字にします。snake_caseは単語をアンダースコアで区切ります。PascalCaseは最初を含め、各単語の先頭を大文字にします。PascalCaseはUpperCamelCaseとも呼ばれます。
形式を変えても、名前が表す意味は変わりません。customerDisplayNameをcustomer_display_nameにしても、顧客IDや請求先名にはならないため、表記の統一と意味の検討は分けて行います。
| 形式 | 表記例 | 見分けるポイント |
|---|---|---|
| camelCase | customerDisplayName | 先頭は小文字、区切りは大文字 |
| snake_case | customer_display_name | 小文字の単語を _ で区切る |
| PascalCase | CustomerDisplayName | すべての単語が大文字で始まる |
言語と名前の役割に合わせて選ぶ
GoogleのTypeScriptスタイルガイドでは、変数や関数はlowerCamelCase、クラスや型などはUpperCamelCaseとしています。一方、PythonのPEP 8では、関数や変数には小文字とアンダースコア、クラスにはCapWordsという区別があります。これらは各ガイドの規約であり、すべての言語に共通する文法上の制約ではありません。
新しい名前を付ける前に、同じフォルダーにある似た役割の名前を3つほど見てみましょう。既存の型がCustomerProfileなら、追加する型も同じ形式に揃えると探しやすくなります。明文化された規約やリンターの設定があれば、それを優先します。
// TypeScriptで役割を分ける例
type CustomerProfile = {
displayName: string;
};
function getDisplayName(customer: CustomerProfile) {
return customer.displayName;
}APIや保存済みデータの名前は、見た目だけで変えない
外部APIからcustomer_idが返る場合、そのキーを勝手にcustomerIdへ変更すると、受け取った値を読めなくなることがあります。受信データの形は保ち、アプリ内で使う名前への変換を境界で行う方法があります。
同じ理由で、データベースの列名、公開済みAPI、他のファイルから使われる関数名は、命名形式の統一だけを理由に一括置換しないようにします。参照先や互換性を確認し、必要なら移行を別の変更として扱います。
// APIのキーを保ちながら、ローカルの名前を揃える例
const customerId = response.customer_id;略語の扱いまで揃える
URLやIDを含む名前は、customerIDとcustomerIdのように揺れやすい箇所です。GoogleのTypeScriptガイドでは、略語も一つの単語として扱う方針を示しています。ただし、外部ライブラリが定めた表記まで変更する必要はありません。
CodePartnerで形式を選ぶときも、候補をそのまま採用する前に周囲のコードと見比べます。英語の意味、単語の区切り、略語の大文字・小文字を別々に確認すると、機械的な変換による違和感を見つけやすくなります。
- 同じ役割の既存の変数・関数・型と形式が揃っているか
- 外部APIや保存済みデータのキーを変更していないか
- ID・URLなどの略語がプロジェクトの規約に合っているか
- 形だけでなく、何を表す名前かが読み取れるか
参照資料
Google TypeScript Style Guide — Identifiers
TypeScriptでの役割別の表記と略語の扱いを確認できます。
PEP 8 — Naming Conventions
Pythonの関数・変数・クラスの命名規約を確認できます。
CodePartnerの活用を考える
サービスの内容や利用前の確認事項は、使い方・活用ガイドで詳しく紹介しています。
CodePartnerの使い方・活用ガイド