我正在阅读Java代码约定PDF,我注意到了这一点:
避免在更高级别隐藏声明的本地声明。为 例如,不要在内部块中声明相同的变量名:
int count;
...
func() {
if (condition) {
int count;
... }
... }
这并不是什么新鲜事,我经常发现自己在写这样的代码。你如何解决这样的案件?当然,你可以说"找到一个更好的名字",但这并不总是那么容易。在更高级别名称的前面或后面添加内容是否有任何约定?
可以使用特定于范围的变量命名约定来减少混淆。
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
}
}
一般来说,只是不要重复使用你的变量名称。 它使那些读取代码的人感到困惑,并使调试变得更加困难。
int count;
count = 1;
与
int count;
this.count = 1;
因此,如果您使用局部变量,则不会使用"this"。
顶级变量具有比较低变量更"详细"的名称。例如:
class A{
private int mVegetablesCount;
public void foo(){
int count;
if(true){
int cnt;
if(true)
int c;
}
}
}
就像变种一样。此外,最好专门命名您的类字段。在我的示例字段中,名为第五个前缀"m"。
如果只处理方法变量声明,则可以使用 this
关键字来引用实例变量,如以下示例所示:
public class Foo {
private int id;
public void setId(int id) {
this.id = id;
}
}
在这里,this.id
是指实例变量,而id
是指传递给 setter 的参数。
听到使用更好的变量名称的建议,但我确实认为你真正应该有重复名称的唯一情况是当你准备为 ivar 设置一个新值时,或者刚刚阅读一个 ivar。即便如此,使用具有更多含义的名称通常更具可读性,因此例如,如果您只需要一个与临时barr
相同的变量,请将其命名为 tmpBarr
或类似的东西。
我已经在库中看到过这种编码风格:
- 成员变量:
_variable
- 局部变量:
locVariable
- 方法参数(参数):
parVariable
但我个人认为它使代码混乱。
任何好的 IDE 都会使用颜色代码,该颜色代码在局部变量和类成员之间有明显的区别。