我在整个编程过程中遇到的一个常见困境是在循环中声明变量.说我必须执行以下操作:
List list=myObject.getList();
Iterator itr=list.iterator();
while (itr.hasNext()){
BusinessObject myBo=(BusinessObject)itr.next();
process(myBo);
}
Run Code Online (Sandbox Code Playgroud)
在上面的代码片段中,应该myBo在循环外声明还是在循环内声明它不会对内存和性能造成伤害?
如果可能的话使用List<BusinessObject>并Iterator<BusinessObject>避免铸造:
List<BusinessObject> list = myObject.getList();
Iterator<BusinessObject> itr = list.iterator();
while (itr.hasNext()) {
process(itr.next());
}
Run Code Online (Sandbox Code Playgroud)
良好软件设计的一个原则是限制局部变量的范围,即在最后一次使用该变量后不久结束的块内及时声明它们.这不会影响性能或其他"硬"方面,但会使程序更易读,更易于分析.
总之,做你正在做的事情被认为是好的.
myBo只是对对象的引用(由 itr.next() 返回)。因此,它需要的内存量非常小,并且只创建一次,并且将其添加到循环中不会影响您的程序。IMO,在使用它的循环内声明它实际上有助于使其更具可读性。