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