変数を 1 行で宣言するのが悪い習慣なのはなぜですか?
例えば
private String var1, var2, var3
それ以外の:
private String var1;
private String var2;
private String var3;
変数を 1 行で宣言するのが悪い習慣なのはなぜですか?
例えば
private String var1, var2, var3
それ以外の:
private String var1;
private String var2;
private String var3;
私の意見では、各変数を別々の行に配置する主な目的は、バージョン管理ツールの仕事を容易にすることです。
いくつかの変数が同じ行にある場合、異なる開発者による無関係な変更に対して競合が発生するリスクがあります。
C++ の場合:
int * i, j;
i は int * 型、j は int 型です。区別はあまりにも簡単に見逃されます。
それぞれを 1 行にまとめることで、後でコメントを追加しやすくなります。
さまざまな理由があると思いますが、突き詰めると、1 行で複数のことを行っているため、最初の行は読みにくく、失敗しやすいということです。
そして、それはすべて本当の利益ではありません.2行の節約されたスペースが本当の利益であることがわかります.
それはあなたが持っているときに起こることと似ています
if ((foo = some_function()) == 0) {
//do something
}
もちろん、この例はあなたのものよりもはるかに悪いです。
C / C ++では、ポインタ型を示すために使用される*が、直後の識別子にのみ適用されるという問題もあります。したがって、経験の浅い開発者のかなり一般的な間違いは、書くことです
int* var1, var2, var3;
3つの変数すべてが「intpointer」型であると想定しているのに対し、コンパイラーの場合、これは次のようになります。
int* var1;
int var2;
int var3;
var1のみをポインタにします。
個別の行を使用すると、各行に変数の使用法を説明するコメントを追加できます (変数の名前から明確でない場合)。
なぜそれは悪い習慣ですか?あなたのコードがまだ読める限り、そうは思わない。
//not much use
int i, j, k;
//better
int counter,
childCounter,
percentComplete;
一部の言語では、例の var2 と var3 は文字列ではないため、バリアント (型なし) になります。
正直言って、私はそれに反対していません。同じ行に同様の変数をグループ化することは完全に実行可能だと思います。
float fMin、fMax;
ただし、変数が無関係である場合は明確に操作します。
int iBalance、iColor;
関連性。
2 つの変数が String 型であるからといって、それらが互いに密接に関連しているとは限りません。
2 つ (またはそれ以上) の変数が、変数の型ではなく関数によって密接に関連している場合は、それらを一緒に宣言することができます。つまり、プログラムの読者が 2 つの変数を一緒に見ることが理にかなっている場合にのみ、実際に一緒に配置する必要があります。
これが私の理由です:
次のような場合はどうでしょうか。
public static final int NORTH = 0,
EAST = 1,
SOUTH = 2,
WEST = 3;
それも悪い習慣と見なされますか?以前に述べたいくつかのポイントに反するので、私はそれで大丈夫だと思います。
それで、(臭いコードではありますが)例では、それをしない理由はありますか?
減速時に変数を初期化できる場合、および初期化する場合は、ほとんどの場合、これは悪い習慣です。これがそれほど悪くないかもしれない例は次のとおりです:
string a,b;
if (Foo())
{
a = "Something";
b = "Something else";
}
else
{
a = "Some other thing";
b = "Out of examples";
}
edgに同意します。また、各変数を別々の行に配置する方が読みやすく、メンテナンスが簡単であるためです。タイプ、スコープ、およびその他の修飾子がすぐに表示され、修飾子を変更すると、必要な変数にのみ適用されるため、エラーが回避されます。
一般的には、他の人が議論したバージョン管理とコメントの理由によるものであり、私はすべてのケースの 95% でそれを適用します。ただし、グラフィックスをコーディングしていて、いくつかの変数でテクスチャ座標 (常に s および t として参照される) を表す場合など、それが理にかなっている状況があります。次に、それらを次のように宣言します。
int s、t; // テクスチャ座標
IMHO は、コードを短くすることと、これら 2 つの変数が一緒に属していることを明示することの両方によって、コードの可読性を高めます (もちろん、この場合、単一のポイント クラス変数を使用することを主張する人もいます)。