ウィキペディアの「命名規則」ページには、Java 規則に基づく次のステートメントが含まれています。
一時的な「使い捨て」変数を除いて、1 文字の変数名は避ける必要があります。
変数が 1 文字の名前の候補として受け入れられる前に、変数はどの程度「一時的」である必要がありますか?
ウィキペディアの「命名規則」ページには、Java 規則に基づく次のステートメントが含まれています。
一時的な「使い捨て」変数を除いて、1 文字の変数名は避ける必要があります。
変数が 1 文字の名前の候補として受け入れられる前に、変数はどの程度「一時的」である必要がありますか?
私が 1 文字の名前を使用するのは、いくつかの状況だけです。
x
やなどの座標y
。for
変数がブロック スコープで名前i
が , j
, k
, ...である場所を使用して反復をループします。E
要素、K
キー、V
値などの一般的な型名。それ以外の場合は、長い名前を使用します。時間が経つにつれて、以前使用していた短いフォームを削除していることに気づきました。短縮することもめったにありません。速く入力できますし、略語よりも実際の単語の方が入力しやすいです。
childCount
titleNormalizer
colorLoader
これにより、1 年後に用途を検索してコードを変更する必要がある場合に、非常に簡単になります。
もちろん、これは意見に基づくものですが、いくつかの考慮事項があります。
for ループまたはインデックスを必要とするその他のものにインデックスを付けます。小さな範囲が重要です。for ループに加えて、次のような SQL ステートメントを完成させるコードも作成しました。
int idx = 0;
ps.addInt(idx++, userId);
ps.addString(idx++, userName);
ps.addString(idx++, userEmail);
idx
しかし、その場合でも、より好ましいことがわかりましたi
。メンテナーとして、idx
作者は本当にインデックスを意味していたと私に話します。 i
ライターはインデックスを意図していた可能性があるか、変数の名前付けが下手だった可能性があり、あいまいさを解消するためにコードをもう少し読む必要があることを教えてくれます。
もちろん、 のような機能はforeach
、これがかなりボイラープレートであり、言語が使い捨て変数を必要とすべきではないという事実に対処してきました。これは、C++1 がサポートするようになったと私は信じています。
1 文字の変数には、見つけにくい、検索や置換が難しいなど、ややばかげていますが関連する考慮事項があることに注意してくださいgrep
。IDE から開発する場合、これはあまり重要ではありませんが、そうならない可能性さえある場合は、次に、これはもう少し重要です。代わりにgrep
を使用すると、変数が変更された場所を確認するだけでも難しくなります。i
ii
したがって、これらの考慮事項は、私の確固たる意見は次のとおりです。
1 文字の名前は使用しないでください。せめて2つにしてください。その言語でコーディングするすべての開発者が使い捨てが予想される場所でのみ使用してください。私が考えることができる唯一の 2 つの例は、for
ループとrc
C の戻りコードです。Java または C++11 では、1 文字の使い捨てを使用していることに気付いた場合は、これを回避するための言語機能があるため、コードをより適切に設計してください。