????????
最近在做一個(gè)汽車銷售系統(tǒng)的改善工作,
這個(gè)系統(tǒng)已經(jīng)運(yùn)行兩年了,
兩年來,
客戶不斷的提出新需求,
系統(tǒng)也在不斷的改來改去。
這次輪到我來改它了。
?
想想
N
年前初學(xué)編程的時(shí)候,
書上,
網(wǎng)上,
雜志上不斷的在說,
要養(yǎng)成良好的編程習(xí)慣。
然后還給出了
N
長(zhǎng)的一大篇文章來介紹一些編程規(guī)范。
我這個(gè)人是很懶的,
大概的看了一下就過去了。
沒有特意的記什么。
好在我這個(gè)人也不是特別的懶,
對(duì)自己的工作也是很上心。
編程的時(shí)候盡可能做到更好。
性能功能能考慮到的都要做到最好。
?
慢慢的也養(yǎng)成了一些編程的習(xí)慣,
?
時(shí)間長(zhǎng)了,
下意識(shí)的就去遵守一些模式,模范之類的東西了。
????????
有了這些習(xí)慣,
再看這次修改的系統(tǒng),
真的是生可忍熟不可忍了。
?
這次我也不說什么編程規(guī)范了,
我就說說這些編程惡習(xí)
。
????????
一,
?
程序沒有注釋
??????
注釋
!!
注釋
!!!
如果只是打印了一個(gè)
HELLO WORLD
,
您不注釋那也就算了,
如果是只有一兩百行的小功能類您不注釋,
那我也忍了,
可是
3000
多行一個(gè)類的業(yè)務(wù)邏輯代碼,
您老人家還不注釋
!!!??
你
TM
讓我怎么去改代碼,
?
一點(diǎn)業(yè)務(wù)邏輯的說明都沒有,
我改代碼的時(shí)候,得一邊用
DEBUG
調(diào)試,
一邊替他加注釋。
然后才能進(jìn)行自己的工作。
幾千行的一個(gè)類,
?
一行注釋都沒有,
你
TM
就不覺得顏色單調(diào)了點(diǎn)嗎
?
??????
二,
?
不遵守基本的編程約定
??????
變量名大小寫混亂,
明明是變量,
非要完全大寫,
要不就大寫開頭。
要不就是方法名全是大寫,
最牛
B
的一個(gè)方法是用中文做方法名,
你丫這時(shí)候想起打中文來了,
累不累呀。
??????
還有人用拼音做變量名方法名,就算您英文不好,稍微查一下金山詞霸行不行,現(xiàn)在百度和
GOOGLE
都有翻譯功能,稍微查一下英文,也當(dāng)是學(xué)英語了行不行?
您實(shí)在太忙的話,不查也就算了,拼音就拼音吧,好賴也算是中國(guó)話的。
可是您就別用拼音簡(jiǎn)寫了,英文簡(jiǎn)寫還認(rèn)不出來呢,
您還用拼音的開頭字母當(dāng)變量名,
那我
TM
上哪兒猜去呀!
?
??????
三,
不明就里的代碼
??????
系統(tǒng)中經(jīng)常會(huì)出現(xiàn)這樣的代碼,尤其是在
controller
里居多:
?????? // some code
?????? If(flag .equals(“submit”)){
?????? model.getInfo();
}else{
?????? model.getInfo();
}
我沒寫錯(cuò),
if
和
else
調(diào)用的方法完全一樣,大家也放心,我仔細(xì)的看過調(diào)用的代碼,調(diào)用的方法里,也沒有根據(jù)其它情況來改變他的運(yùn)行路線。我就不明白為什么要做這個(gè)
if
判斷了。擔(dān)心會(huì)有什么特殊的業(yè)務(wù)邏輯,
所以也不趕隨便去改他。
猜了半天,感覺最理想的答案是寫代碼的人,擔(dān)心以后會(huì)有新的邏輯分支,
所以在這里用
if
預(yù)留了一個(gè)位置,
以后改的時(shí)候方便。
數(shù)日之后有幸遇見了當(dāng)初寫這代碼的老兄,問過之后立刻暈倒,原來是這個(gè)代碼是參照別的模塊的樣子寫的,別的模塊在這里都有
N
個(gè)程序分支,通過
if
來判斷后決定調(diào)用哪個(gè)
model
里的方法。但他這個(gè)模塊很簡(jiǎn)單,沒有什么分支,就是調(diào)用那一個(gè)方法,但他寫代碼時(shí),看別人的模塊在這里都進(jìn)行
if
判斷了,所以覺得自己也應(yīng)該判斷一下,于是就出現(xiàn)了上面這樣的代碼。
?
四,
面向過程式的編程方法
遇到過好幾次
2000
多行的方法,所有業(yè)務(wù)邏輯,一氣呵成,就用了一個(gè)方法搞定。如果是簡(jiǎn)單的邏輯也就算了,
可是幾千行的代碼全放在一個(gè)方法里,一個(gè)類里有無數(shù)的重復(fù)代碼。
這回到好,重構(gòu)那本書沒白看,
現(xiàn)在有了實(shí)踐的機(jī)會(huì)了。
難道您自己調(diào)試的時(shí)候就不覺得麻煩嗎?
我在這里不想討論什么面向過程還是面向?qū)ο螅矂e和我說什么方法多了也不一定就是面向?qū)ο蟮乃枷搿?/span>
平時(shí)對(duì)自己寫的代碼多上點(diǎn)心,
大家都是在這行干了幾年的人了,把代碼寫的漂亮點(diǎn)有什么不好。
?
五,
代碼縮進(jìn)混亂
我們公司有規(guī)定,改代碼的時(shí)候,不許修改原有代碼的格式。
不管他多亂,也不許改。
我不明白這是為什么,也許是檢查代碼的人,要用文件比較工具吧。
但這下苦壞我了,
代碼的格式那叫一個(gè)亂。
有頂著行頭寫的,
有向后空了
N
格的,大概是寫代碼的人,
為了方便自己找到正在調(diào)試的那段代碼,所以把代碼的縮進(jìn)變得和其它代碼與眾不同吧。
那您調(diào)試完了到是重新排一下版呀,
這真的不累~~,
現(xiàn)在的
IDE
工具都有自動(dòng)排版代碼的功能,
一個(gè)快捷鍵就搞定了,稍微勤快一點(diǎn)行嗎??
最
BT
的一段代碼是縮進(jìn)居然出了屏幕!!!
你吃飽了撐的呀,
沒事縮那么遠(yuǎn)干嗎,
我根據(jù)后臺(tái)輸出找了半天也沒找到那段代碼在哪兒,
原來是因?yàn)榭s進(jìn)的太遠(yuǎn)了,不在屏幕范圍之內(nèi),
向右拉了半天滾動(dòng)條才找到。
你丫是不是寫著代碼睡著了?
臉正好砸在
TAB
鍵上。
?
六,
多余的后臺(tái)輸出
好幾個(gè)循環(huán)嵌套在一起~~~
也行,
就算是因?yàn)闃I(yè)務(wù)邏輯需要,沒別的辦法也將就了。
好幾個(gè)循環(huán)嵌套在一起查數(shù)據(jù)庫(kù),
咱們最好還是開動(dòng)一下腦筋,
看看有什么更好的辦法。如果還是沒別的辦法,
那也湊合了。
可這種情況您就別在后臺(tái)輸出
SQL
語句啦,
每次一執(zhí)行程序,成百上千個(gè)
SQL
語句在后臺(tái)輸出,
查數(shù)據(jù)庫(kù)才用了一兩秒,結(jié)果輸出這些
SQL
就用了半分鐘。
您自己就沒覺出程序慢在哪里嗎?
您調(diào)試程序的時(shí)候輸出一下也就算了,
提交到正式運(yùn)行的環(huán)境時(shí),就麻煩您,勞您大駕~~
把那些輸出注釋掉吧,實(shí)在不行留幾個(gè)重要的輸出就行了。
讓這種代碼影響系統(tǒng)性能~~
也太冤了吧。
?
七,
打腫臉充胖子
我也不知道這條算不算惡習(xí),也許不算,在有些人眼里還是好事。但也要看具體情況,經(jīng)常有些人寫代碼不喜歡用
IDE
,只用
EDITPLUS
這類工具。按常理說,初學(xué)者都應(yīng)該盡量用這些編輯器寫代碼,對(duì)加深學(xué)習(xí)印象有好處。也有人說高手不屑于用那些
IDE
,我少見多怪,
這種絕頂高手我沒見過。
但咱平時(shí)工作的時(shí)候,要的是效率,您不是那種高手就乖乖的用
IDE
吧。經(jīng)常見到有些人,為查一個(gè)方法的調(diào)用,搜來搜去的。真正的高手是工作效率最高的人,不是用最簡(jiǎn)單工具的人。
//20061019 start
??????? 一些補(bǔ)充:?
有些人提到用EDITPLUS的效率其實(shí)也很高, 這點(diǎn)我也承認(rèn). 但我想說明一下, 我所見到的用EDITPLUS那個(gè)人, 根本沒有發(fā)揮出editplus應(yīng)有的效率和功能. 在他的手里editplus只是一個(gè)多了顏色區(qū)分的記事本. 編譯程序還是用javac , 也不會(huì)用ANT, 發(fā)布程序還是手工拷貝. 號(hào)稱四年經(jīng)驗(yàn)的程序員, 剛到公司時(shí)用了一天時(shí)間重裝好電腦后, 寫了一個(gè)打印hello world的程序測(cè)試環(huán)境. 結(jié)果不寫static void main方法, 直接就要用java去運(yùn)行. 運(yùn)行不成功還說系統(tǒng)配置有問題, 需要再重裝.? 每次幫他調(diào)試程序, 想查一個(gè)方法的調(diào)用, 一個(gè)文件一個(gè)文件的搜, 看得我這個(gè)急...........???? 我的希望是不管用什么工具, 要讓這個(gè)工具在自己的手里發(fā)揮出最大的作用來, 如果用editplus非常純熟的話, 我也會(huì)很佩服那個(gè)人的, 而且會(huì)虛心的向他學(xué)習(xí)使用技巧
可他把時(shí)間全耽誤在這上了, 這樣的工作效率, 加班都是活該的
//20061019 end
??? 今天就寫這么多,
大家還遇到過什么樣的編程惡習(xí),歡迎補(bǔ)充。
大家不要總是抱怨什么工資太少,工作量太大。工作效率這玩意兒是要經(jīng)驗(yàn)來做基礎(chǔ),這沒錯(cuò),經(jīng)驗(yàn)少也沒事。咱平時(shí)寫程序的時(shí)候多上點(diǎn)心,多對(duì)自己的代碼思考一下,多動(dòng)動(dòng)腦子。自然就能總結(jié)出最好的工作經(jīng)驗(yàn)了,工作效率自然就提高了。
也別總是說什么
STRUTS
不好,
HIBERNATE
太慢,不屑去用它。人家的程序能在全世界流行,自然有他的過人之處。多讀讀他的代碼,學(xué)習(xí)一下他到底好在哪里,如何才能把這些優(yōu)點(diǎn)應(yīng)用到自己的代碼上。這才是最重要的。
?也許咱們寫不出什么高超的代碼技巧,寫不出什么華麗的算法,但如果能在一些習(xí)慣,細(xì)節(jié)上做到精益求精,那也對(duì)得起自己的代碼了。
??? 寫出上面這些代碼的人,如果你的工資真的很少,那我只能惋惜的說一句:你的工資是可憐了點(diǎn),但看您寫的這代碼,連這點(diǎn)工資都不應(yīng)該給你!!
posted on 2006-10-16 23:27
小強(qiáng) 閱讀(5651)
評(píng)論(45) 編輯 收藏 所屬分類:
技術(shù)相關(guān)