使用大括号的单独部分在一个方法中编写代码是不错的做法?
public String getName()
{
String returnValue;
{
int a=0;
--- 1 - 5 lines----
}
{
int a=0;
--- 6 - 10 lines----
}
return returnValue;
}
如果这是一个好习惯,那么这是我的下一个问题。 我在方法中两次声明相同的变量但在块内部。这是否意味着每个块占用单独的\额外内存?我在这儿吗?如果我错了,请纠正我。
答案 0 :(得分:2)
所有变量都可以在定义的块中 进行访问,例如
{
int a=0;
--- 1 - 5 lines----
}
a
变量只能在此块中访问。
它会占用更多内存吗?
就像在循环中定义变量一样。您不必担心,因为内存管理几乎传递给垃圾收集器。
这是一个好习惯吗?
有时这种方法可能导致Code smells。就个人而言,我更喜欢跳过这样的结构,并想到有意义的名字。这对于源可读性非常有用,imho。
答案 1 :(得分:1)
这样做不是一个好习惯。
当你需要这样做时,它就是一个迫切需要的重构的标志,也就像Martin Fowler所说的“代码味道”。
变量的范围仅限于该块,并在块退出时进行垃圾收集。
{
int i = 0;
}
//the scope of i will end here and will be eligible for garbage collection
答案 2 :(得分:1)
这通常不是最佳做法,因为它会降低代码的可读性。
对于内存,每个块都有自己的范围,因此占用了单独的内存。更具体地说,在执行第一个块之后,每个范围都限制在块范围内的变量都可以被垃圾收集。
答案 3 :(得分:1)
如果你觉得你需要这样一个单独的块,你应该考虑使用这种块分开的方法。
我同意所有人说这是一种不好的做法。