Java | 変数名(識別子)のルールと慣習

Java Java
スポンサーリンク

Javaの変数名の基本

はじめたばかりだと「名前の付け方」は見落としがち。でも、読みやすさとエラー回避の要です。ここでは「絶対守るべきルール」と「読みやすさのための慣習」を、例題と一緒に噛み砕いて説明します。


ルール(守らないとエラーになる)

  • 使える文字: 英数字、アンダースコア_、ドル記号$、全角文字(日本語もOK)
  • 先頭文字: 数字で始めてはいけない
    例:7countはNG、count7はOK
  • 大文字小文字: 区別される
    例:scoreScoreは別物
  • 予約語の禁止: if, class, returnなどは使えない
    例:int if = 1;はコンパイルエラー
  • 真偽・nullは不可: true, false, nullは名前にできない
  • 長さ制限: なし(ただし長すぎると読みにくい)
// OK例
int count = 0;
int _total = 10;
int price7 = 300;
int あいさつ = 1; // 技術的にはOK(ただし一般的には英語が推奨)

// NG例
int 7items = 7;     // 先頭が数字なのでNG
int class = 1;      // 予約語はNG
int true = 0;       // true/false/nullはNG
Java

慣習(守ると読みやすくなる)

  • 変数名は小文字で始める: 単語の区切りは大文字(キャメルケース) 例:totalPrice, userName
  • 短くても意味が伝わる: 文ではなく「名札」 例:xよりcountdataよりuserList
  • ループの一時変数は短く: i, jなどでOK(短いスコープのときのみ)
  • 定数(final)は全部大文字+アンダースコア:
    例:MAX_VALUE, TAX_RATE
  • クラス名は先頭大文字(パスカルケース):
    例:User, OrderItem
  • メソッド名は小文字始まりのキャメルケース:
    例:printData(), calculateTotal()
// 変数・メソッド・クラスの命名例
class OrderItem {                  // クラス名(パスカルケース)
    static final double TAX_RATE = 0.1; // 定数(全大文字+_)

    int quantity;                  // 変数(小文字始まり)
    double unitPrice;

    double calculateTotal() {      // メソッド(小文字始まりのキャメルケース)
        return quantity * unitPrice * (1 + TAX_RATE);
    }
}
Java

よくある失敗と改善例

  • 曖昧な名前
    • 悪い例:data, info
    • 良い例:userList, orderCount
  • 過剰に短い/長い
    • 悪い例:c, thisIsTheTotalPriceOfAllItemsInTheCart
    • 良い例:count, totalPrice
  • 約束事を混ぜる
    • 悪い例:Total_price(小文字+アンダースコア+大文字の混在)
    • 良い例:totalPrice
  • 先頭数字
    • 悪い例:3rdItem
    • 良い例:thirdItemまたはitem3

例題で理解を固める

例題1:変数名を直してみよう

  • 問題: 次の中でJavaの変数名として「ルール的に」OKなのはどれ?
    • user-name
    • 7up
    • _cache
    • class
    • price$
  • 答え:_cache, price$
    • user-nameはハイフン不可、7upは先頭が数字、classは予約語

例題2:読みやすさを意識

  • 問題: ショッピングカートの「合計金額」を表す変数名、どれがベター?
    • sum, total, totalPrice, priceTotalOfShoppingCart
  • 答え:totalPrice
    • sumtotalは文脈が曖昧、長すぎるのも逆効果

例題3:定数に変える

  • 問題: 消費税率を表すならどれが適切?
    • taxRate, TAX_RATE, TaxRate
  • 答え:TAX_RATE
    • 定数(変えない値)は全大文字+アンダースコア

小さな実践課題

  • 課題1: 年齢、名前、会員フラグ(会員かどうか)を持つ変数を宣言してみてください。
  • 目標: ルールを守りつつ、意味が伝わる名前にする。
int age = 28;
String userName = "Sato";
boolean isMember = true; // 「is + 名詞」で真偽が明確
Java
  • 課題2: 1〜10の合計を求めるコードで、適切な変数名にしてみてください。
int total = 0;
for (int i = 1; i <= 10; i++) {
    total += i;
}
System.out.println(total);
Java

すぐ使えるチェックリスト

  • 先頭: 文字または_/$で始まっているか
  • 禁止: 予約語やtrue/false/nullを使っていないか
  • ケース: 変数/メソッドは小文字始まり、クラスは大文字始まりか
  • 定数: 全大文字+アンダースコアになっているか
  • 意味: 短すぎず長すぎず、役割がひと目でわかるか
  • 一貫性: プロジェクト内で命名スタイルが揃っているか

名前付けは「正しさ」と「伝わりやすさ」の両立です。

タイトルとURLをコピーしました