最近在做一个汽车销售系统的改善工作,这个系统已经运行两年了,两年来,客户不断的提出新需求,系统也在不断的改来改去。这次轮到我来改它了。想想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 就用了半分钟。 您自己就没觉出程序慢在哪里吗? 您调试程序的时候输出一下也就算了, 提交到正式运行的环境时,就麻烦您,劳您大驾~~ 把那些输出注释掉吧,实在不行留几个重要的输出就行了。 让这种代码影响系统性能~~ 也太冤了吧。
评论
aidiyuxin 2008-07-29   回复
哈哈,要是所有的程序员都安文档作事就天下太平咯
kidsmopi 2008-07-29   回复
呵呵, 这些人肯定没考过SCJD,  SCJD对文档,注释,缩进,代码名词要求的极严~~额 我也是看书上说的
发表评论

您还没有登录,请登录后发表评论

aidiyuxin
搜索本博客
博客分类
我的相册
402ea65f-9987-3c1a-a17a-dbcf4f36cc03-thumb
20080322115.jpg
共 1 张
最近加入圈子
存档
最新评论