変数名・関数名の長さの目安|プログラミングの命名規則
プログラミングにおいて、変数名や関数名の命名はコードの可読性を左右する最も重要な要素の一つです。短すぎる名前は意味が伝わらず、長すぎる名前はコードを冗長にします。適切な長さの名前を付けるには、スコープの広さや役割の複雑さに応じた判断基準が必要です。この記事では、命名の長さの目安と各言語の慣例を解説します。名前の文字数確認には 文字カウンタス をご活用ください。
スコープに応じた変数名の長さの目安
変数名の適切な長さは、その変数が使われるスコープの広さに比例します。Robert C. Martin の「Clean Code」や Google のスタイルガイドでも、この原則は広く支持されています。
| スコープ | 推奨文字数 | 例 | 理由 |
|---|---|---|---|
| ループカウンタ (1〜3 行) | 1〜2 文字 | i, j, k |
慣例として広く認知されており、短いスコープでは十分に意味が伝わる |
| ラムダ・短いブロック (5 行以内) | 3〜8 文字 | item, user, val |
文脈から型や役割が推測できる範囲 |
| 関数内ローカル変数 | 8〜15 文字 | userName, totalPrice |
関数の処理を読み解く際に、変数の役割が明確に伝わる長さ |
| クラスのフィールド・プロパティ | 10〜20 文字 | maxRetryCount, isAuthenticated |
クラス全体で参照されるため、より具体的な名前が必要 |
| グローバル変数・定数 | 15〜25 文字 | MAX_CONNECTION_TIMEOUT, DEFAULT_PAGE_SIZE |
コードベース全体で参照される可能性があり、曖昧さを排除する必要がある |
この目安はあくまで指針であり、重要なのは「名前を見ただけで役割が理解できるか」という基準です。スコープが狭ければ短い名前でも文脈から意味が伝わり、スコープが広ければ具体的な名前が求められます。
関数名・クラス名の命名規則と長さ
関数名とクラス名は変数名よりも広いスコープで使われるため、より説明的な名前が求められます。ただし、冗長になりすぎると呼び出し側のコードが読みにくくなるため、バランスが重要です。
| 識別子の種類 | 推奨文字数 | 命名のポイント | 例 |
|---|---|---|---|
| 関数名 | 10〜25 文字 | 動詞 + 目的語の形式で、何をする関数かを明示する | calculateTotalPrice, sendEmailNotification |
| クラス名 | 10〜25 文字 | 名詞または名詞句で、クラスが表す概念を示す | UserRepository, PaymentProcessor |
| インターフェース名 | 10〜25 文字 | 振る舞いを表す形容詞、または名詞を使用する | Serializable, EventListener |
| 定数名 | 10〜30 文字 | UPPER_SNAKE_CASE で、値の意味を具体的に示す | MAX_RETRY_COUNT, DEFAULT_TIMEOUT_MS |
| Boolean 変数・関数 | 10〜20 文字 | is / has / can / should などのプレフィックスを付ける | isValid, hasPermission, canExecute |
関数名は「動詞で始める」が鉄則です。data() より fetchData()、validation() より validateInput() のほうが、関数の振る舞いが明確に伝わります。
各言語の命名慣例の比較
プログラミング言語ごとに命名のスタイルや慣例は異なります。チーム開発では、使用言語の公式スタイルガイドに従うことが基本です。
| 言語 | 変数・関数 | クラス | 定数 | 公式ガイド |
|---|---|---|---|---|
| Java | camelCase | PascalCase | UPPER_SNAKE_CASE | Google Java Style Guide |
| Python | snake_case | PascalCase | UPPER_SNAKE_CASE | PEP 8 |
| JavaScript | camelCase | PascalCase | UPPER_SNAKE_CASE | Airbnb Style Guide 等 |
| Go | camelCase (非公開) / PascalCase (公開) | PascalCase | PascalCase または camelCase | Effective Go |
| Ruby | snake_case | PascalCase | UPPER_SNAKE_CASE | Ruby Style Guide |
| C# | camelCase (ローカル) / PascalCase (公開) | PascalCase | PascalCase | Microsoft C# Coding Conventions |
- Java: 比較的長い名前が許容される文化がある。IDE の補完機能が充実しているため、
AbstractSingletonProxyFactoryBeanのような長い名前も実務で使われる - Python: PEP 8 では簡潔さが重視される。snake_case の特性上、単語の区切りが明確で読みやすい
- JavaScript: フロントエンド開発ではコンポーネント名が長くなりがち。
UserProfileEditFormのように、役割を明確にする命名が好まれる