世间本无沙漠, 我每想你一次, 上帝就落下一粒沙, 从此便有了撒哈拉! 这世界本来没有海, 只因为我每想你一次, 上帝就掉下一滴眼泪, 于是就有了太平洋!

[转帖][转帖]说一说编程恶习

上一篇 / 下一篇  2007-03-31 21:54:33 / 个人分类:额~~

一.程序没有注释
v"t2eZ!~"|xTS-[M&K?M0★黑基空间★ uLz/U-`7eb

-Xq9} O:wa2C0★黑基空间★5xQIA_
    注释 !! 注释 !!! 如果只是打印了一个 HELLO WORLD , 您不注释那也就算了, 如果是只有一两百行的小功能类您不注释, 那我也忍了, 可是 3000 多行一个类的业务逻辑代码,您老人家还不注释 !!!   你 TM 让我怎么去改代码, 一点业务逻辑的说明都没有,我改代码的时候,得一边用 DEBUG 调试,一边替他加注释。 然后才能进行自己的工作。几千行的一个类, 一行注释都没有, 你 TM 就不觉得颜色单调了点吗 ?
.P(r4r+~LI0★黑基空间★dz+Nc1}"h

pEs4c2X0★黑基空间★7p9l Ca,S-|p
二.不遵守基本的编程约定★黑基空间★jH| nKY
★黑基空间★,k3Uo CQ9Dy&\ iy

.n6S/L:nt0
2O/?+p `*N/v]'o/q8H0    变量名大小写混乱,明明是变量,非要完全大写,要不就大写开头.要不就是方法名全是大写,最牛 B 的一个方法是用中文做方法名,你丫这时候想起打中文来了,累不累呀。还有人用拼音做变量名方法名,就算您英文不好,稍微查一下金山词霸行不行,现在百度和 GOOGLE 都有翻译功能,稍微查一下英文,也当是学英语了行不行? 您实在太忙的话,不查也就算了,拼音就拼音吧,好赖也算是中国话的。可是您就别用拼音简写了,英文简写还认不出来呢,您还用拼音的开头字母当变量名, 那我 TM 上哪儿猜去呀!   
HDL/u_H)d}_c0B0
*x)[Tb4mF1Wy0
*`/WF%a y GEF3K0
@u\u0v!?#e0三, 不明就里的代码
J7tk,y?h F6H0Tu0
6l9P9X!k ~ T1e Z)t+U4@0★黑基空间★v:n%bik'v5wZ t
★黑基空间★(U\;M \4w#M9m1xw(L
   系统中经常会出现这样的代码,尤其是在 controller 里居多:★黑基空间★.l'cd0y? p5h9o/@

VN'?1H]B"h3t,o0
yXO.~ L ^0★黑基空间★L3x|"Msx+u@ I D A
       // some code★黑基空间★ nq SCE!{T1s.K Ym

||0p3?9O;O.nF0
zJ.FXp0★黑基空间★,M3jF\ ea1h2\;^)G
       If(flag .equals(“submit”)){★黑基空间★h6m/n[Ilb&Of!B^
★黑基空间★,n)w$j4k:~$_ XL

7kz&E6]*kC\0
:i)@ Z2EG5^T0       model.getInfo();
(IZqI#K3G,Np%A0★黑基空间★/m2Y7Dz1mO"_u

0j2]eQ5W^T6a0★黑基空间★0l9ErZ'MxAag
}else{
fGR)_2_7F.JjN'x*O t0★黑基空间★-FbiI;Fi ^ h
★黑基空间★;Ac UM4P6C)WQ2F f

MncyD nv C&q~0       model.getInfo();
A5\#h7@:j/N0
]#b$P&P(Sf&L0★黑基空间★|uk0dy.L$~1jgX
★黑基空间★Pfu|FG{,L
}
0t0fV0K'q8p1S0
c8U3ui w0★黑基空间★Wu [2bFYO
★黑基空间★8k$z)r*y#[4u8t
我没写错, if 和 else 调用的方法完全一样,大家也放心,我仔细的看过调用的代码,调用的方法里,也没有根据其它情况来改变他的运行路线。我就不明白为什么要做这个 if 判断了。担心会有什么特殊的业务逻辑, 所以也不赶随便去改他。 猜了半天,感觉最理想的答案是写代码的人,担心以后会有新的逻辑分支,所以在这里用 if 预留了一个位置, 以后改的时候方便。
ktLc hKS$P j0★黑基空间★9x9J]D]MK3Gq
★黑基空间★u `eLb Xb
★黑基空间★LuRy{Y?1QB1~
数日之后有幸遇见了当初写这代码的老兄,问过之后立刻晕倒,原来是这个代码是参照别的模块的样子写的,别的模块在这里都有 N 个程序分支,通过 if 来判断后决定调用哪个 model 里的方法。但他这个模块很简单,没有什么分支,就是调用那一个方法,但他写代码时,看别人的模块在这里都进行 if 判断了,所以觉得自己也应该判断一下,于是就出现了上面这样的代码。  ★黑基空间★p y$f*l!~:m
★黑基空间★ qL+P3} u ]B

kM#F;Q2r:\@1e0
|Q AT2V*P$pb0四, 面向过程式的编程方法
G+A1q8xDGTL0
Uj~ v4Q%}Ee0★黑基空间★a"Qve/I }6?Q

o3C:?.kWC)Q0QN6`0遇到过好几次 2000 多行的方法,所有业务逻辑,一气呵成,就用了一个方法搞定。如果是简单的逻辑也就算了,可是几千行的代码全放在一个方法里,一个类里有无数的重复代码。 这回到好,重构那本书没白看, 现在有了实践的机会了。★黑基空间★+sN!D#~8g+`J

#s F!BJ K$tmr0★黑基空间★w%gI,egF3l7u N

uBr&a6@3R0难道您自己调试的时候就不觉得麻烦吗? 我在这里不想讨论什么面向过程还是面向对象,也别和我说什么方法多了也不一定就是面向对象的思想。平时对自己写的代码多上点心, 大家都是在这行干了几年的人了,把代码写的漂亮点有什么不好。  
~7d,q*W/t`Iq8b6R0★黑基空间★2~3z(}.i/n#H(I3Y7w
★黑基空间★M$z.?D4_
★黑基空间★ K^]/Ny[f
五, 代码缩进混乱★黑基空间★IZ k&N)G R
★黑基空间★Y/P%s5K%y Z}~P4sD u2X
★黑基空间★C r&c E S

0?/y&xy[.q/m0我们公司有规定,改代码的时候,不许修改原有代码的格式。 不管他多乱,也不许改。我不明白这是为什么,也许是检查代码的人,要用文件比较工具吧。★黑基空间★.E9M9s#k"D$d*xP

&cqV/I]O z[y0
~T%Z,B0S:[gv0
sKw*g%L0但这下苦坏我了, 代码的格式那叫一个乱。 有顶着行头写的, 有向后空了 N 格的,大概是写代码的人, 为了方便自己找到正在调试的那段代码,所以把代码的缩进变得和其它代码与众不同吧。 那您调试完了到是重新排一下版呀,这真的不累~~, 现在的 IDE 工具都有自动排版代码的功能, 一个快捷键就搞定了,稍微勤快一点行吗??★黑基空间★9Jg6S%]r0R:?K!y,W{;j
★黑基空间★ m#p+Vs#X;d7o

-o1|S|Sj4w^ wZ0★黑基空间★H6I*a$LUB"|
最 BT 的一段代码是缩进居然出了屏幕!!!你吃饱了撑的呀, 没事缩那么远干吗, 我根据后台输出找了半天也没找到那段代码在哪儿, 原来是因为缩进的太远了,不在屏幕范围之内, 向右拉了半天滚动条才找到。 你丫是不是写着代码睡着了?脸正好砸在 TAB 键上。   ★黑基空间★+P\ay.sSBg,ByY'|8vG

#?F ? H;rj0★黑基空间★/vIqq D.gs
★黑基空间★7u&V.AJO0s/~
六, 多余的后台输出★黑基空间★Y"Y*TBX3Z

-p3Mk7cG_TpSm0
yC)X nl0
b6BA e%a#S?0好几个循环嵌套在一起~~~ 也行, 就算是因为业务逻辑需要,没别的办法也将就了。好几个循环嵌套在一起查数据库, 咱们最好还是开动一下脑筋, 看看有什么更好的办法。如果还是没别的办法, 那也凑合了。 可这种情况您就别在后台输出 SQL 语句啦, 每次一执行程序,成百上千个 SQL 语句在后台输出, 查数据库才用了一两秒,结果输出这些 SQL 就用了半分钟。 您自己就没觉出程序慢在哪里吗? 您调试程序的时候输出一下也就算了, 提交到正式运行的环境时,就麻烦您,劳您大驾~~把那些输出注释掉吧,实在不行留几个重要的输出就行了。 让这种代码影响系统性能~~ 也太冤了吧。   
Cq_%FGwJ(y|0★黑基空间★e,sd`6Q'Z u

'A!I$Eba m0★黑基空间★D0}1l Ga'h i'yG1]
七, 打肿脸充胖子
*qf#I:\&F6N[ [0★黑基空间★_2`n;|+E7G

p[[H7H W7TT5u0★黑基空间★ ieJuQ(`e9P
我也不知道这条算不算恶习,也许不算,在有些人眼里还是好事。但也要看具体情况,经常有些人写代码不喜欢用 IDE ,只用 EDITPLUS 这类工具。按常理说,初学者都应该尽量用这些编辑器写代码,对加深学习印象有好处。也有人说高手不屑于用那些 IDE ,我少见多怪, 这种绝顶高手我没见过。
a+mH'P&LE0
x:I hD P3h%H0
`F&jE(hbR0★黑基空间★!w(T0o9f/iC"JA
但咱平时工作的时候,要的是效率,您不是那种高手就乖乖的用 IDE 吧。经常见到有些人,为查一个方法的调用,搜来搜去的。真正的高手是工作效率最高的人,不是用最简单工具的人。★黑基空间★7C;IRRY
//20061019 start★黑基空间★V:O\&pz%} f3A
一些补充:★黑基空间★i2Cn_ N#rf.w3~
★黑基空间★#sJcY:]?0XcY U
★黑基空间★/Z'}2{2T J3eb
★黑基空间★%yD7Yv3a*| H
有些人提到用EDITPLUS的效率其实也很高, 这点我也承认. 但我想说明一下, 我所见到的用EDITPLUS那个人, 根本没有发挥出editplus应有的效率和功能. 在他的手里editplus只是一个多了颜色区分的记事本. 编译程序还是用javac , 也不会用ANT, 发布程序还是手工拷贝. 号称四年经验的程序员, 刚到公司时用了一天时间重装好电脑后, 写了一个打印hello world的程序测试环境. 结果不写static void main方法, 直接就要用java去运行. 运行不成功还说系统配置有问题, 需要再重装.  每次帮他调试程序, 想查一个方法的调用, 一个文件一个文件的搜, 看得我这个急...........     我的希望是不管用什么工具, 要让这个工具在自己的手里发挥出最大的作用来, 如果用editplus非常纯熟的话, 我也会很佩服那个人的, 而且会虚心的向他学习使用技巧★黑基空间★"[8y+A DW

rJ$UE+t#f3h,C:d VG0★黑基空间★khK/Z+A{\D
★黑基空间★ av!N)K0RC;H1Q
可他把时间全耽误在这上了, 这样的工作效率, 加班都是活该的★黑基空间★'Gj/Gp2Z?$R"ia5d
//20061019 end★黑基空间★ja_1_2X
    今天就写这么多, 大家还遇到过什么样的编程恶习,欢迎补充。
7V6A2A)TMI0★黑基空间★0LiUh%w1eH

oDDh5cr YB0
+V/G1a"@:TCU&jhCEx3`0大家不要总是抱怨什么工资太少,工作量太大。工作效率这玩意儿是要经验来做基础,这没错,经验少也没事。咱平时写程序的时候多上点心,多对自己的代码思考一下,多动动脑子。自然就能总结出最好的工作经验了,工作效率自然就提高了。
9d(y _.SK0★黑基空间★d*g~d;\
★黑基空间★7q*M0?S@g
★黑基空间★H _]F~N9eM
也别总是说什么 STRUTS 不好, HIBERNATE 太慢,不屑去用它。人家的程序能在全世界流行,自然有他的过人之处。多读读他的代码,学习一下他到底好在哪里,如何才能把这些优点应用到自己的代码上。这才是最重要的。
8X'q l y9u|3_ v&Q-{"ia0
| [*kDn-m0
9bS7k%Qf Na~$d0
'Y*C;GE3Cj _0v"E0也许咱们写不出什么高超的代码技巧,写不出什么华丽的算法,但如果能在一些习惯,细节上做到精益求精,那也对得起自己的代码了。
$Efw(O _{J^0B3z#V0
2d/`*L$AR0★黑基空间★Y!\N,}1j"N a:k3?
★黑基空间★drw~/mF(~ qu~
    写出上面这些代码的人,如果你的工资真的很少,那我只能惋惜的说一句:你的工资是可怜了点,但看您写的这代码,连这点工资都不应该给你!!

TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2008-10-21  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 280748
  • 日志数: 128
  • 图片数: 27
  • 建立时间: 2006-08-26
  • 更新时间: 2007-04-28

RSS订阅

Open Toolbar