最近在做一个汽车销售系统的改善工作,
				这个系统已经运行两年了,
				两年来,
				客户不断的提出新需求,
				系统也在不断的改来改去。
				这次轮到我来改它了。
				  
				想想
				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
				吧。经常见到有些人,为查一个方法的调用,搜来搜去的。真正的高手是工作效率最高的人,不是用最简单工具的人。
		
		
				
						
								
//20061019 start
        一些补充: 
				 有些人提到用EDITPLUS的效率其实也很高, 这点我也承认. 但我想说明一下, 我所见到的用EDITPLUS那个人, 根本没有发挥出editplus应有的效率和功能. 在他的手里editplus只是一个多了颜色区分的记事本. 编译程序还是用javac , 也不会用ANT, 发布程序还是手工拷贝. 号称四年经验的程序员, 刚到公司时用了一天时间重装好电脑后, 写了一个打印hello world的程序测试环境. 结果不写static void main方法, 直接就要用java去运行. 运行不成功还说系统配置有问题, 需要再重装.  每次帮他调试程序, 想查一个方法的调用, 一个文件一个文件的搜, 看得我这个急...........     我的希望是不管用什么工具, 要让这个工具在自己的手里发挥出最大的作用来, 如果用editplus非常纯熟的话, 我也会很佩服那个人的, 而且会虚心的向他学习使用技巧
可他把时间全耽误在这上了, 这样的工作效率, 加班都是活该的
//20061019 end
		
				
						
						
    今天就写这么多,
				大家还遇到过什么样的编程恶习,欢迎补充。
		
		
				大家不要总是抱怨什么工资太少,工作量太大。工作效率这玩意儿是要经验来做基础,这没错,经验少也没事。咱平时写程序的时候多上点心,多对自己的代码思考一下,多动动脑子。自然就能总结出最好的工作经验了,工作效率自然就提高了。
		
		
				也别总是说什么
				STRUTS
				不好,
				HIBERNATE
				太慢,不屑去用它。人家的程序能在全世界流行,自然有他的过人之处。多读读他的代码,学习一下他到底好在哪里,如何才能把这些优点应用到自己的代码上。这才是最重要的。
		
		
				 也许咱们写不出什么高超的代码技巧,写不出什么华丽的算法,但如果能在一些习惯,细节上做到精益求精,那也对得起自己的代码了。
    写出上面这些代码的人,如果你的工资真的很少,那我只能惋惜的说一句:你的工资是可怜了点,但看您写的这代码,连这点工资都不应该给你!!
		
	posted on 2006-10-16 23:27 
小强 阅读(5691) 
评论(45)  编辑  收藏  所属分类: 
技术相关