Posted on 2005-11-17 11:55
canonical 阅读(419)
评论(0) 编辑 收藏 所属分类:
软件开发
新手总是有很多不好的代码习惯. 最常见的一个是不使用临时变量.例如
for(int i=0;i<myList.size();i++){
otherList.get(i).getSomeVar().getName();
otherList.get(i).getSomeVar().getValue();
}
这种做法有如下后果:
1. 代码冗长, 容易出错, 例如循环体中的某个i写成了j
2. 函数调用终究是要耗费时间的, 在一个循环体中的调用往往对性能有可见的影响. 特别是当函数动态装载数据的时候, 例如每次调用该函数都查询数据库, 这种不使用临时变量的方法将会为系统留下性能隐患.
3. 一条很长的语句如果不是为流式调用而设计的, 则这种调用方式会影响到我们的调试工作. 例如
当某个中间步骤返回空指针时, 程序会抛出NullPointerException异常, 而我们得到的信息只是某一行存在空指针异常,
但是无法定位到具体是哪个步骤. 当某个中间步骤返回的值不是null但也不是我们所期望的值的时候, 我们同样难以诊断出具体出错的步骤.
使用临时变量将会为调试提供便利
int i,n=myList.size();
for(i=0;i<n;i++){
MyVar var = otherList.get(i);
var.getName();
var.getValue();
...
}
在需要的时候我们可以在出错语句处加上断点, 或者直接输出可疑的变量值.
4. 长语句不利于抽象出子函数. 例如在第二种方式中我们抽象出子函数的难度比第一种方式小
void processVar(MyVar var){
var.getName();
var.getValue();
}
造成这些习惯的原因很耐人寻味, 我猜想缺乏抽象能力似乎是最基本的原因, 毕竟为变量起一个名字也是最简单的抽象步骤之一.