变量的就近原则
就近原则(Principle of Proximity)-把相关的操作放在一起,例如让注释靠近它所描述的代码,让控制循环的代码靠近循环本身等。变量的就近原则指尽可能在靠近第一次使用变量的位置声明和定义该变量。
就近原则实际上也是变量的作用域最小化的一种实现手段。过早地声明局部变量不仅会使它的作用域过早地扩展,而且结束得也过于晚了。局部变量的作用域从它被声明的点开始扩展,一直到外围块的结束处。如果变量在“使用它的块”之外被声明的,当程序退出该块之后,该变量仍是可见的。如果变量在它的目标使用区域之前或之后被意外地使用的话,后果将可能是灾难性的。
有人喜欢在方法或者子程序的开始部分统一声明和定义所有的变量,如下代码示例。这种风格会产生一些问题:
1、当使用done变量的代码开始执行的时候,done很可能已经倍修改了。即便你在第一次写这个程序的时候不会这样,后续的修改也可能会导致出现这样的错误。
2、一旦把所有的初始化代码都放在一起,可能会让人产生误解,认为所有这些变量都会在子程序中一直使用,而事实上done知识在后面才被用到。
3、可读性不好。当读到引用done变量的代码时,维护人员可能都忘记了done在哪里定义的,又需要在子程序里面来回搜寻变量的定义,迫使阅读者的目光在程序里跳来跳去。
public void function()
{
int accountIndex = 0;
double total = 0;
boolean done = false;
// other code
// code using accountIndex
...
// code using total
...
// code using done
while ( !done )
...
}
符合就近原则也就符合作用域最小化,好的代码示例如下:
public void function()
{
int accountIndex = 0;
// code using accountIndex
...
double total = 0;
// coding using total
...
boolean done = false;
// code using done
while ( !done )
...
}