最近在做一个汽车销售系统的改善工作,
这个系统已经运行两年了,
两年来,
客户不断的提出新需求,
系统也在不断的改来改去。
这次轮到我来改它了。
想想
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