posts - 176, comments - 240, trackbacks - 0, articles - 7

代码习惯

Posted on 2005-11-17 11:55 canonical 阅读(406) 评论(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();
       }

    造成这些习惯的原因很耐人寻味, 我猜想缺乏抽象能力似乎是最基本的原因, 毕竟为变量起一个名字也是最简单的抽象步骤之一.


只有注册用户登录后才能发表评论。


网站导航: