喬云
摘 要 隨著計(jì)算機(jī)產(chǎn)業(yè)的發(fā)展,大量的IT企業(yè)紛紛涌現(xiàn),程序員這種職業(yè)越來越常見。但是良好的編程習(xí)慣卻是每個(gè)程序員都應(yīng)該具備的工作素質(zhì)。不好的編程習(xí)慣在軟件開發(fā)過程中留下很多的隱患,造成很多的資源浪費(fèi),加大了軟件維護(hù)的成本,有些甚至制約了整個(gè)系統(tǒng)的生命力。探討糟糕的編程習(xí)慣帶來的危害,并希望能引起廣大程序員的共鳴,共同關(guān)注代碼習(xí)慣的養(yǎng)成。
關(guān)鍵詞 代碼習(xí)慣 軟件開發(fā) 編程習(xí)慣 危害
中圖分類號(hào):TP39 文獻(xiàn)標(biāo)識(shí)碼:A
0緒論
隨著計(jì)算機(jī)以及智能手機(jī)的發(fā)展,軟件應(yīng)用已經(jīng)完全進(jìn)入人們的日常生活,與之相對(duì)應(yīng)的,產(chǎn)生了大量的軟件開發(fā)、升級(jí)、維護(hù)工作,而在這龐大的工作之余,缺陷的修改、版本的維護(hù)、版本回退、客戶的個(gè)性化需求,還有由于開發(fā)團(tuán)隊(duì)的人員變動(dòng)等等因素引起的代碼維護(hù)問題,對(duì)任何一個(gè)程序員來說,都是不可避免的問題。每個(gè)程序員都不可避免的要去讀別人的代碼,改別人的代碼,所以,面對(duì)糟糕的代碼就像面對(duì)一個(gè)打結(jié)的毛線團(tuán),處處不敢動(dòng),處處看不透。也許本來是來改bug的,結(jié)果卻留下了更大的隱患。所以良好的編程習(xí)慣,是每個(gè)程序員都應(yīng)該具備的工作素質(zhì)
1常見的錯(cuò)誤代碼習(xí)慣以及其危害
1.1堅(jiān)決不動(dòng)原代碼,永遠(yuǎn)添加新方法
這種情況在開發(fā)團(tuán)隊(duì)人員變動(dòng)大的情況下非常常見。因?yàn)樽畛醯拈_發(fā)人員都不在了,后來的程序員是在一個(gè)很大的代碼平臺(tái)上做后續(xù)的開發(fā)。這種情況下要做的第一件事當(dāng)時(shí)是讀代碼,但是讀起來卻費(fèi)時(shí)費(fèi)力,而每每要調(diào)整或者實(shí)現(xiàn)的功能看起來卻又不復(fù)雜,所以就更加懶得讀,所以直接添加了新方法,將調(diào)用接口改到新方法上了事。當(dāng)然還有一種情況就是不敢去動(dòng)原方法,因?yàn)椴恢烙袔滋幷{(diào)用這個(gè)方法,怕出現(xiàn)牽一發(fā)動(dòng)全身的情況,一個(gè)小修改,導(dǎo)致其他的問題,所以最穩(wěn)妥的就是添加新方法。但是這種代碼習(xí)慣的危害顯而易見:
(1)增大了后續(xù)的維護(hù)成本。面對(duì)一個(gè)功能類似的程序和面對(duì)一堆功能類似的程序,哪個(gè)更輕松是顯而易見的,而且,這樣的解放方法會(huì)讓其他的程序員迷惑,功能類似,卻個(gè)個(gè)不同,調(diào)用的人迷茫,維護(hù)的人困惑。
(2)嚴(yán)重的代碼冗余。代碼冗余的危害是眾所周知的,暫且不提效率問題以及無意間的代碼耦合等等,單說無用的代碼,卻增大了系統(tǒng)崩潰的可能性,就可以直接說明精簡代碼的必要性了。
(3)降低了軟件的可維護(hù)性,養(yǎng)成糟糕的代碼習(xí)慣。這樣的維護(hù)方式維護(hù)起來的代碼就像是一個(gè)亂搭起來棚子,沒有一處敢輕易的修改,系統(tǒng)脆弱,而且隨著時(shí)間的推移,其維護(hù)越來越困難,而且也養(yǎng)成的很不好的代碼習(xí)慣,不讀代碼,圖一時(shí)清閑,埋下大的隱患。
1.2無規(guī)范,無備注
關(guān)于代碼的規(guī)范已經(jīng)是老生常談了,相信每一個(gè)老程序員都會(huì)告訴你一大堆代碼規(guī)范的好處,易讀,便于維護(hù),不易出現(xiàn)混亂與bug,有助于促進(jìn)團(tuán)隊(duì)合作,方便代碼審查等等。同時(shí)代碼備注同樣的重要。而且是代碼不可或缺的一部分,或者換句話說,是規(guī)范的代碼不可獲取的一部分。我們寫一個(gè)方法或一個(gè)類,通過標(biāo)準(zhǔn)的備注告訴以后的自己或者將來的維護(hù)人員這段代碼做了什么或者定義了什么,用到了什么對(duì)象,輸出了什么對(duì)象,易讀性和效率是不是大大的提高了?而且也可以避免出現(xiàn)大量的相同定義、相同方法。我們在開發(fā)中使用到的大量的幫助文檔,就是這些標(biāo)準(zhǔn)的備注,我們在開發(fā)中享受了前人優(yōu)秀備注帶來的好處,為什么不能也把自己的代碼變成可方便別人的代碼,況且,與人方便,與己方便呢。但是很多剛?cè)胄械某绦騿T不喜歡在代碼里加備注,覺得麻煩,覺得自己完成了自己的模塊,自己清楚就行,哪里需要給自己留說明。卻忘了軟件是個(gè)整體,模塊,類,方法之間的相互調(diào)用本就稀松平常,況且,躺在代碼行里的備注永遠(yuǎn)躺在代碼行里,而躺在腦海中的備注卻會(huì)在日復(fù)一日的工作中去留無蹤。無備注,無規(guī)范完全是害人害己的代碼習(xí)慣。
1.3無視架構(gòu),恣意發(fā)揮
代碼就是要實(shí)現(xiàn)功能,這本身沒有錯(cuò),但是有些人完全無視架構(gòu),不管是表現(xiàn)層,還是業(yè)務(wù)邏輯層,反正要訪問數(shù)據(jù)庫,就寫sql。有些代碼甚至在頁面上都有直接訪問數(shù)據(jù)庫的方法。架構(gòu)混亂,一樣導(dǎo)致代碼難讀,不可復(fù)用,甚至影響安全性。
1.4其他錯(cuò)誤的代碼習(xí)慣
還有很多錯(cuò)誤的代碼習(xí)慣,如:學(xué)會(huì)一招,就開始一招鮮吃遍天,不管方法是不是適合系統(tǒng),硬塞方法進(jìn)去。再比如有的程序員隨意修改別人和過往的代碼,不去問,不去好好的讀,上手就大刀闊斧,一路改,一路留bug,不問前人為什么這么寫,抬手就給改了,導(dǎo)致到處是隱患,到處留后門。再比如,不愛自查代碼,增大代碼測試壓力,而且容易遺留問題。
2結(jié)論
以上是從事了五年的軟件開發(fā)所汲取經(jīng)驗(yàn)和教訓(xùn),要杜絕這樣的現(xiàn)象,除了要加強(qiáng)管理,程序員的自我修煉也顯得尤其重要。其實(shí)很多人并不是故意要這樣,而是受自身的限制。作為管理者要不斷地教育和敦促程序員,程序員也要注意不斷地學(xué)習(xí),培養(yǎng)自己的編程意識(shí)和素質(zhì),同樣要培養(yǎng)自己對(duì)產(chǎn)品負(fù)責(zé),對(duì)項(xiàng)目負(fù)責(zé),對(duì)同事負(fù)責(zé),對(duì)自己的工作負(fù)責(zé)的態(tài)度和榮譽(yù)感。
參考文獻(xiàn)
[1] 劉玉.當(dāng)代程序員的基本素質(zhì)與能力[J].河北職業(yè)技術(shù)學(xué)院學(xué)報(bào),2004(03).
[2] 左輕侯.如何成為一名優(yōu)秀的程序員[J].程序員,2006(03).
[3] 蘇亞麗,李淑英,陳剛.論程序設(shè)計(jì)中良好編程風(fēng)格的運(yùn)用與分析[J].玉溪師范學(xué)院學(xué)報(bào),2010(08).