1

Java Code Conventions PDF を読んでいて、次のことに気付きました。

より高いレベルでの宣言を隠すローカル宣言は避けてください。たとえば、内側のブロックで同じ変数名を宣言しないでください。

int count;
         ...
         func() {
             if (condition) {
                 int count;
... }
... }

これは何も新しいことではなく、私はよくそのようなコードを書いていることに気づきます。そのようなケースをどのように解決しますか?もちろん、「より良い名前を見つけてください」と言うことができますが、それは必ずしも簡単ではありません。上位レベルの名前の前後に何かを追加する規則はありますか?

4

5 に答える 5

2

混乱を避けるために、スコープ固有の変数命名規則を使用できます。

String[] names;

public void populateNames(String[] theNames) {
    names = theNames;
}

また、thisキーワードを使用して、必要なスコープ変数を明示的に指定できます。

int count = 0;
public void func() {
    int count = 0;
    if (condition) {
        this.count++; // increment the class-scope count variable
    } else {
        count++; // increment the local scope variable
    }
}

一般に、変数名を再利用しないでください。コードを読む人を混乱させ、デバッグを少し難しくします。

于 2012-08-14T12:35:52.203 に答える
0

メソッド変数の宣言のみを扱う場合は、thisキーワードを使用して、次の例のようにインスタンス変数を参照できます。

public class Foo {
    private int id;

    public void setId(int id) {
        this.id = id;
    }
}

ここでthis.idは、インスタンス変数をid指しますが、setter に渡されるパラメーターを指します。

より良い変数名を使用する提案を聞きたくないと言ったのは知っていますが、実際に重複した名前を使用する必要がある唯一の状況は、ivar に新しい値を設定する準備をしている場合、または単にivar を読みます。それでも、もう少し意味のある名前を使用する方が読みやすいことが多いため、たとえば、barr一時的に同じ時間の変数のみが必要な場合は、名前を付けるtmpBarrか、それに似た名前を付けます。

于 2012-08-14T12:40:09.050 に答える
0

ライブラリで使用されているこのコーディング スタイルを見たことがあります。

  • メンバー変数:_variable
  • ローカル変数:locVariable
  • メソッドの引数 (パラメーター):parVariable

しかし、個人的には、コードが乱雑になると思います。

優れた IDE は、ローカル変数とクラス メンバーを明確に区別するカラー コードを使用します。

于 2012-08-14T12:42:07.030 に答える
0
int count;
count = 1;

と同じではありません

int count;
this.count = 1;

したがって、ローカル変数を使用する場合は、「this」を使用しないでください。

于 2012-08-14T12:35:16.447 に答える
0

最上位の変数には、下位の変数よりも「詳細な」名前があります。例えば:

class A{

    private int mVegetablesCount;

    public void foo(){
        int count;
        if(true){
           int cnt;
             if(true)
                int c;
        }
    }
}

バリアントとして。また、クラス フィールドに具体的な名前を付けることをお勧めします。私の例では、フィスプレフィックス「m」という名前のフィールドです。

于 2012-08-14T12:35:48.287 に答える