注册 登录
编程论坛 ASP.NET技术论坛

[转载]编程恶性

永不回头 发布于 2006-10-31 09:10, 6051 次点击

最近在做一个汽车销售系统的改善工作, 这个系统已经运行两年了, 两年来, 客户不断的提出新需求, 系统也在不断的改来改去。 这次轮到我来改它了。 想想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太慢,不屑去用它。人家的程序能在全世界流行,自然有他的过人之处。多读读他的代码,学习一下他到底好在哪里,如何才能把这些优点应用到自己的代码上。这才是最重要的。
写出上面这些代码的人,如果你的工资真的很少,那我只能惋惜的说一句:你的工资是可怜了点,但看您写的这代码,连这点工资都不应该给你!!

32 回复
#2
雪玫瑰2006-10-31 09:12
好,这个贴子好。我也是新手,老大说让我写注释,我总觉得这代码很简单不需要注释,不过,我现在就把注释给加上去,免得过一会再被说。
#3
chenjin1452006-10-31 09:15

you are right
#4
tianlei2006-10-31 10:08
是啊 每个人都应该在工作中 注意一些基本的编程规范 这样才能真正对自己负责,对别人负责
#5
myruo2006-10-31 10:33
不错我也要遵守以下编程规范
#6
wyg48592006-10-31 10:51
楼主写的太付有哲理了,佩服啊!说出了许多人想说的话,原来有这么多人都有共同点啊,希望大家共勉之!
#7
メ冰枫ぱ雪2006-10-31 21:53
大部分好的习惯都有做到哈,公司和学习的过程中都要求这样的说 。。
#8
小海龟2006-10-31 23:37
#9
cokick2006-11-01 01:31
不错...编程的时候..应该注意规范....以后以后的功能的扩展
要有一个良好的编程习惯...
#10
无名游客2006-11-11 13:26
#11
bygg2006-11-11 14:27
归纳得很好.
#12
川流不息2006-11-11 14:35
深度贊同
#13
窗外细雨2006-11-12 12:44

支持

#14
smoon2006-11-12 16:06
没写过什么大的东西 还没什么感觉  不过以后一定注意哈哈
#15
雨花2006-11-12 18:38
一个良好的编程习惯受益非浅啊
#16
longlongjiaz2006-11-15 15:25
我们真的应该注重编程规范
#17
tel19822006-11-15 22:49
说得太好了,赞成。
#18
学技术2006-11-16 01:28
       编程习惯是杂们中国程序员要注意的!的确GOOD~这就是中国程序员为什么赶不上国外的原因吧~谢谢高手们经常在论坛里面多提一些工作经验~好让我们米经验的人~多学点~
#19
漯河2006-11-17 11:31
非常的好

看来我也要改变一下了。

不能在偷懒了。

#20
凌枫影2006-11-17 17:27

在我們公司
不僅編碼
就是寫注釋也都有規范的
這樣做上一段時間
正像那位寫文章的人一樣
習慣就已經形成了

#21
IPV62007-04-15 15:36
就是牛啊!好,太好了
#22
youkuwanhuo2007-09-27 20:25
#23
yms1232007-09-27 22:13
有很深的理解,非常同意楼主的观点。这就是为什么微软愿意把项目外包给印度也不给中国的原因,有些公司确实是这样。个人觉得不写注释、乱起变量名、程序无规划、无结构或者结构混乱等,这些缺点如果是出在一个编程爱好者手中,也还是有情可原毕竟是编程爱好者不按规矩写就算了。而这些毛病却出在国内某些软件或网站公司,写的源代码里,这就太说不过去了。
为什么印度的软件工业化开发比国内好,就是因为其多人开发和团队开发都非常的有组织有纪律,一个项目不仅结构设计良好。文档规范等一应俱全,所有开发人员严格遵守文档和规范的要求,统一编写代码。
个人认为这才是一个专业公司该具有的素质和规范,想到秦始皇为什么能统一六国。以前一个研究历史的电视节目里讲,通过对兵马俑的研究发现,秦国的军队编排非常巧妙。队形很整齐,其中不乏现代军事思想中的雏形,士兵步调一致和统一。
所以说团队开发跟个人开发是不一样的,只有开发团队的每个人都步调一致,统一行动,才能开发出优秀和上乘的软件。
#24
垃圾的沉默2007-09-28 01:10
我写代码从来不注释..看来得改进改进了..
#25
guoxhvip2007-09-28 03:04
#26
blueskyss2008-07-21 14:43
注释真了是不喜欢用!!!
别的什么自己我感觉还算是规范!!!
就喜欢看全是代码的感觉!!!
#27
xyq7018302008-07-21 14:53
学习了.呵呵
#28
yutianyi2008-07-24 09:25
是可忍,孰不可忍
#29
ONEPROBLEM2008-07-24 09:43
呵呵~~来接受教育了.
#30
雪雨星风2008-07-24 12:34
相当精辟  相当不错
#31
dearwolf41282010-07-28 14:16
经典,顶!!
#32
liguangwen912012-11-30 13:17
嗯,我遇到问题更加绝。
1.命名的变量名,方法名是中英结合。
2.数据库部分的表的表名和列名是中文繁体,程序代码中也有。
3.开发的人没用开发工具,该程序在开发工具中没法运行。
4.整个程序更本没注解
5.程序中很多代码和文件根本没有使用。
1