分享

编程恶习

 太阳000 2008-12-10

 


最近在做一个汽车销售系统的改善工作,这个系统已经运行两年了,两年来,客户不断的提出新需求,系统也在不断的改来改去。这次轮到我来改它了。想想N年前初学编程的时候,书上,网上,杂志上不断的在说,要养成良好的编程习惯。然后还给出了N长的一大篇文章来介绍一些编程规范。我这个人是很懒的,大概的看了一下就过去了。没有特意的记什么。好在我这个人也不是特别的懒,对自己的工作也是很上心。编程的时候尽可能做到更好。性能功能能考虑到的都要做到最好。慢慢的也养成了一些编程的习惯,时间长了,下意识的就去遵守一些模式,模范之类的东西了。  
      有了这些习惯,再看这次修改的系统,真的是是可忍孰不可忍了。这次我也不说什么编程规范了,我就说说这些编程恶习。    
   
    一,     程序没有注释  
      注释!!注释!!!   如果只是打印了一个HELLO   WORLD,   您不注释那也就算了,   如果是只有一两百行的小功能类您不注释,   那我也忍了,   可是3000多行一个类的业务逻辑代码,   您老人家还不注释!!!       你TM让我怎么去改代码,     一点业务逻辑的说明都没有,   我改代码的时候,得一边用DEBUG调试,   一边替他加注释。   然后才能进行自己的工作。   几千行的一个类,     一行注释都没有,   你TM就不觉得颜色单调了点吗(因为注释在编辑器里都是颜色高亮)?  
   
   二,     不遵守基本的编程约定  
         变量名大小写混乱,   明明是变量,   非要完全大写,   要不就大写开头。   要不就是方法名全是大写,   最牛B的一个方法是用中文做方法名,   你丫这时候想起打中文来了,   累不累呀。  
  还有人用拼音做变量名方法名,就算您英文不好,稍微查一下金山词霸行不行,现在百度和GOOGLE都有翻译功能,稍微查一下英文,也当是学英语了行不行?   您实在太忙的话,不查也就算了,拼音就拼音吧,好赖也算是中国话的。   可是您就别用拼音简写了,英文简写还认不出来呢,   您还用拼音的开头字母当变量名,   那我TM上哪儿猜去呀!  
   
  三,   不明就里的代码  
  系统中经常会出现这样的代码,尤其是在controller里居多:  
  //   some   code  
  If(flag   .equals(“submit”)){  
  model.getInfo();  
  }else{  
  model.getInfo();  
  }  
  我没写错,if和else调用的方法完全一样,大家也放心,我仔细的看过调用的代码,调用的方法里,也没有根据其它情况来改变他的运行路线。我就不明白为 什么要做这个if判断了。担心会有什么特殊的业务逻辑,   所以也不赶随便去改他。   猜了半天,感觉最理想的答案是写代码的人,担心以后会有新的逻辑分支,   所以在这里用if预留了一个位置,   以后改的时候方便。  
  数日之后有幸遇见了当初写这代码的老兄,问过之后立刻晕倒,原来是这个代码是参照别的模块的样子写的,别的模块在这里都有N个程序分支,通过if来判断后 决定调用哪个model里的方法。但他这个模块很简单,没有什么分支,就是调用那一个方法,但他写代码时,看别人的模块在这里都进行if判断了,所以觉得 自己也应该判断一下,于是就出现了上面这样的代码。  
   
  四,   面向过程式的编程方法  
  遇到过好几次2000多行的方法,所有业务逻辑,一气呵成,就用了一个方法搞定。如果是简单的逻辑也就算了,   可是几千行的代码全放在一个方法里,一个类里有无数的重复代码。   这回到好,重构那本书没白看,   现在有了实践的机会了。  
  难道您自己调试的时候就不觉得麻烦吗?   我在这里不想讨论什么面向过程还是面向对象,也别和我说什么方法多了也不一定就是面向对象的思想。   平时对自己写的代码多上点心,   大家都是在这行干了几年的人了,把代码写的漂亮点有什么不好。  
   
  五,   代码缩进混乱  
     我们公司有规定,改代码的时候,不许修改原有代码的格式。   不管他多乱,也不许改。   我不明白这是为什么,也许是检查代码的人,要用文件比较工具吧。    
但这下苦坏我了,   代码的格式那叫一个乱。   有顶着行头写的,   有向后空了N格的,大概是写代码的人,   为了方便自己找到正在调试的那段代码,所以把代码的缩进变得和其它代码与众不同吧。   那您调试完了到是重新排一下版呀,   这真的不累~~,   现在的IDE工具都有自动排版代码的功能,   一个快捷键就搞定了,稍微勤快一点行吗??  
最BT的一段代码是缩进居然出了屏幕!!!   你吃饱了撑的呀,   没事缩那么远干吗,   我根据后台输出找了半天也没找到那段代码在哪儿,   原来是因为缩进的太远了,不在屏幕范围之内,   向右拉了半天滚动条才找到。   你丫是不是写着代码睡着了?   脸正好砸在TAB键上。  
   
  六,   多余的后台输出  
  好几个循环嵌套在一起~~~   也行,   就算是因为业务逻辑需要,没别的办法也将就了。   好几个循环嵌套在一起查数据库,   咱们最好还是开动一下脑筋,   看看有什么更好的办法。如果还是没别的办法,   那也凑合了。   可这种情况您就别在后台输出SQL语句啦,   每次一执行程序,成百上千个SQL语句在后台输出,   查数据库才用了一两秒,结果输出这些SQL就用了半分钟。   您自己就没觉出程序慢在哪里吗?   您调试程序的时候输出一下也就算了,   提交到正式运行的环境时,就麻烦您,劳您大驾~~   把那些输出注释掉吧,实在不行留几个重要的输出就行了。   让这种代码影响系统性能~~   也太冤了吧。  
   
  七,   打肿脸充胖子  
     我也不知道这条算不算恶习,也许不算,在有些人眼里还是好事。但也要看具体情况,经常有些人写代码不喜欢用IDE,只用EDITPLUS这类工具。按常理 说,初学者都应该尽量用这些编辑器写代码,对加深学习印象有好处。也有人说高手不屑于用那些IDE,我少见多怪,   这种绝顶高手我没见过。  
  但咱平时工作的时候,要的是效率,您不是那种高手就乖乖的用IDE吧。经常见到有些人,为查一个方法的调用,搜来搜去的。真正的高手是工作效率最高的人,不是用最简单工具的人。  
   
  今天就写这么多,   大家还遇到过什么样的编程恶习,欢迎补充。  
  大家不要总是抱怨什么工资太少,工作量太大。工作效率这玩意儿是要经验来做基础,这没错,经验少也没事。咱平时写程序的时候多上点心,多对自己的代码思考一下,多动动脑子。自然就能总结出最好的工作经验了,工作效率自然就提高了。  
  也别总是说什么STRUTS不好,HIBERNATE太慢,不屑去用它。人家的程序能在全世界流行,自然有他的过人之处。多读读他的代码,学习一下他到底好在哪里,如何才能把这些优点应用到自己的代码上。这才是最重要的。
  写出上面这些代码的人,如果你的工资真的很少,那我只能惋惜的说一句:你的工资是可怜了点,但看您写的这代码,连这点工资都不应该给你!!

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多