为什么在一行上声明变量是不好的做法?为什么不在相同的行上声明几个相同类型的变量?
例如
private String var1, var2, var3
代替:
private String var1;
private String var2;
private String var3;
为什么在一行上声明变量是不好的做法?为什么不在相同的行上声明几个相同类型的变量?
例如
private String var1, var2, var3
代替:
private String var1;
private String var2;
private String var3;
我认为有各种原因,但都可以归结为,首先是公正的可读性,更容易失败,因为一条线是做不止一件事。
而这一切都没有真正的收获,你不告诉我你找到两行节省空间是一个真正的收益。
这是一个类似的事情,当你有
if ((foo = some_function()) == 0) {
//do something
}
当然,这个例子是比你差远了会发生什么。
因为在某些语言中,VAR2和VAR3在你的榜样将不是字符串,他们将变体(无类型)。
在我看来,让每个变量放在一个单独的行上的主要目标是促进版本控制工具的工作。
如果多个变量位于同一行上,您可能会因不同开发人员的无关修改而产生冲突。
同意edg,也因为它更易于维护,每个变量都在单独的行上。您立即看到类型,范围和其他修饰符,并且当您更改修饰符时,它仅适用于您想要的变量 - 这可以避免错误。
使用单独的行,您可以在描述变量使用的每一行上添加注释(如果它的名称不明确)。
这里是我的理由:
在C++:
int * i, j;
我的类型是int *,j的类型是int。 这个区别太容易错过了。
除了让他们在一行中的每个可以更容易地添加一些评论后
说实话我不反对它。我认为将同一行上的相似变量分组是完全可行的,例如,
float fMin,fMax;
但是,当变量不相关时,我会明确指出,例如,
int iBalance,iColor;
在C/C++,你也有问题,即*用于指示指针类型仅适用于直接跟随的id entifier。所以没有经验的开发商相当常见的错误是写
int* var1, var2, var3;
,并期待所有三个变量的类型为“INT指针”的,而对于编译器该读作
int* var1;
int var2;
int var3;
使得只有VAR1一指针。
怎么样的情况下,例如:
public static final int NORTH = 0,
EAST = 1,
SOUTH = 2,
WEST = 3;
是这样认为不好的做法呢?我会考虑,因为它反驳一些以前提出的观点的这样行不行:
因此,在一个(虽然臭的代码)的例子中,是否有原因,你wouldn'那么做?
与此相关的一个问题是:如果添加更多变量并忘记将分号更改为逗号。 ;) – endolith 2013-02-14 20:21:19
大多数情况下,您可以并且想要初始化减速变量时,这是不好的做法。一个例子,这可能不是如此糟糕的是:
string a,b;
if (Foo())
{
a = "Something";
b = "Something else";
}
else
{
a = "Some other thing";
b = "Out of examples";
}
为什么这种不好的做法?我不认为它是,只要你的代码仍然可读。
//not much use
int i, j, k;
//better
int counter,
childCounter,
percentComplete;
您的“更好”风格是我通常在需要变量声明的语言中使用的风格。在保持可读性的同时,它更加干燥。 – 2010-08-09 01:57:03
一般来说,对于别人讨论的版本控制和评论原因,我会在所有情况中的95%中应用它。然而在某些情况下它的确是有意义的,例如,如果我编码图形,并且我想要一些变量来表示纹理坐标(总是按照惯例引用s和t),那么声明它们为
int s ,t; //纹理坐标
恕我直言,通过缩短代码和明确表示这两个变量属于一起(当然有些人会争辩在这种情况下使用单点类变量),从而增强了代码的可读性。
相关性。
仅仅因为两个变量是String类型并不意味着它们彼此密切相关。
如果两个(或多个)变量通过函数紧密相关,而不是变量类型,那么也许他们可以一起声明。即只有当你的程序的读者有意识地将两个变量看在一起时才应该将它们放在一起
虽然在这种情况下重命名变量不是更好吗? – 2008-11-26 00:01:10