1

我正在阅读 Java 代码约定 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 设置一个新值时,或者只是读一个伊瓦尔。即便如此,使用具有更多含义的名称通常更具可读性,例如,如果您只需要一个与barr临时同时的变量,请将其命名tmpBarr或类似的名称。

于 2012-08-14T12:40:09.050 回答
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;
        }
    }
}

就像变种一样。此外,最好专门命名您的类字段。在我的示例字段中,名为 fith 前缀“m”。

于 2012-08-14T12:35:48.287 回答
0

我在一个库中看到了这种编码风格:

  • 成员变量:_variable
  • 局部变量:locVariable
  • 方法参数(参数):parVariable

但我个人认为它会使代码混乱。

任何好的 IDE 都将使用颜色代码,在局部变量和类成员之间做出明显的区别。

于 2012-08-14T12:42:07.030 回答