戲說維護(hù)代碼中的六大問題
代碼的可維護(hù)性對于任何一個(gè)程序而言都是十分重要的。如果一個(gè)人寫的代碼,另一個(gè)人來維護(hù)的時(shí)候感到不知所措,那么對于整個(gè)系統(tǒng)的生命力有極大的制約。我們有的程序員在維護(hù)舊代碼的過程,就仿佛如果遛狗。每修改一個(gè)程序就留下一些隱患,結(jié)果弄的一個(gè)原本好好的代碼到處都是隱患。
良好的編程習(xí)慣是每個(gè)程序員都應(yīng)該具備的工作素質(zhì),在我的軟件生涯中屢屢發(fā)現(xiàn)一些程序員的身上總有這樣或者那樣的壞毛病,這些毛病在一些從業(yè)時(shí)間不是很長的程序員的身上表現(xiàn)的特別突出。
1. 搭棚子式維護(hù)代碼
搭棚子顧名思義就是拿到一個(gè)任務(wù)的時(shí)候,既不做更詳細(xì)的需求分析,也不作詳細(xì)設(shè)計(jì),一開始就打開編程工具,噼里啪啦的定義了一堆的模塊,我不說是定義類,是因?yàn)檫@樣代碼里根本就找不到對象,然后就在這些模塊的基礎(chǔ)上進(jìn)行工作,結(jié)果整個(gè)程序看起來就象胡亂搭起來的棚子,雖然有個(gè)程序的樣子,而且似乎也實(shí)現(xiàn)了所要的功能,但是這樣的程序往往是邏輯混亂,不僅理解困難,維護(hù)起來也是十分的困難。既然是個(gè)棚子,在風(fēng)雨飄搖之日自然難以久長。
出現(xiàn)搭棚子的現(xiàn)象暴露出幾個(gè)方面的問題:
◆管理的混亂。管理者有職責(zé)去檢查這樣的代碼,并及早給予糾正和提供指導(dǎo)。
◆不重視設(shè)計(jì)。如果一個(gè)軟件組織不重視設(shè)計(jì),出現(xiàn)這樣的現(xiàn)象是自然而然的事情。
◆實(shí)用主義。在項(xiàng)目實(shí)施的過程中,有些人的口號就是實(shí)現(xiàn)功能就好,滿足用戶的需求就好,因而在編程的過程中總是匆匆上馬,表面上是加快了進(jìn)度,實(shí)際為項(xiàng)目的后期維護(hù)埋下了炸藥,嚴(yán)重的會(huì)嚴(yán)重影響項(xiàng)目的進(jìn)度和質(zhì)量。
2. 釘釘子式維護(hù)代碼
釘釘子的表現(xiàn)為代碼維護(hù)或者程序?qū)崿F(xiàn)的時(shí)候,硬生生的往程序中添加不必要或者與對象和邏輯相關(guān)的代碼。這樣的代碼往往表現(xiàn)在多層體系的系統(tǒng)中,有些人為了偷懶,不愿意從下層將代碼維護(hù)好,而是從上層開始修改,如用戶需要做一個(gè)報(bào)表程序,那么有的程序員的做法就是將SQL語句直接在界面層進(jìn)行調(diào)用,破壞了系統(tǒng)的層次和封裝。還有的做法就是在不相干的對象中添加對其他對象操作的代碼。
3. 甩錘子式維護(hù)代碼
有的人剛學(xué)了一個(gè)新的技術(shù),或者一個(gè)得到一個(gè)好的點(diǎn)子,不管這個(gè)點(diǎn)子是否使用于當(dāng)前的程序,就到處應(yīng)用。頗有“手上拿了個(gè)錘子就看到什么都是釘子”的架勢。應(yīng)用新的技術(shù)或者點(diǎn)子是好的,但是也要看時(shí)機(jī)和場合。
4. 糊窗子式維護(hù)代碼
窗子破了的時(shí)候,如果沒有地方配玻璃或者懶得去搞一塊玻璃,一些人的做法就是弄一張報(bào)紙或者美女的圖片帖子破了地方,以期遮風(fēng)擋雨。在我們的程序中出現(xiàn)BUG的時(shí)候就如同窗戶破了一個(gè)洞。有的人不是從源頭上進(jìn)行解決,或者不是尋找合理的解決方案,而是就地將一個(gè)漏洞堵上。其后果可能真的堵上了,但是也可能是因?yàn)槠涓膭?dòng)帶來了更多的問題,也可能是堵住了一個(gè)地方,回頭發(fā)現(xiàn)又有其他的漏洞,然后不停的往程序身上帖報(bào)紙。這樣的程序看起來將不知道有多難看。
5. 拉肚子式維護(hù)代碼
拉肚子,我想每個(gè)人都拉過,相信每個(gè)人都會(huì)承認(rèn)其滋味實(shí)際上是不怎么好受的,但實(shí)際上在編程活動(dòng)中有的人偏偏喜歡這樣。我曾發(fā)現(xiàn)有的人一個(gè)函數(shù)居然超過3000行,以一屏幕25行來計(jì)算,要翻100多屏才能將一個(gè)函數(shù)的代碼看完,My God!我想這樣的代碼拿給誰誰都要捏著鼻子,更不要說去維護(hù)了。還有一個(gè)表現(xiàn)是一行往往寫的很長,自己將滾動(dòng)條滾過來滾過去不知道是否曾經(jīng)感到過累的慌。
6. 遛狗子式維護(hù)代碼
狗子是動(dòng)物,隨地大小便是控制不住了,一個(gè)是它們沒有文明的意識,另外一個(gè)是人無法控制它們的意識。然而我們有的程序員在維護(hù)舊代碼的過程,就仿佛如果遛狗。每修改一個(gè)程序就留下一些隱患,結(jié)果弄的一個(gè)原本好好的代碼到處都是隱患。
以上是我的一些總結(jié),一是提醒,而是警醒。要杜絕這樣的現(xiàn)象,除了要加強(qiáng)管理,程序員的自我修煉也顯得尤其重要。其實(shí)很多人并不是故意要這樣,而是受自身的限制。作為管理者要不斷的教育和敦促程序員,程序員也要注意不斷的學(xué)習(xí),培養(yǎng)自己的編程意識和素質(zhì),同樣要培養(yǎng)自己對產(chǎn)品負(fù)責(zé),對項(xiàng)目負(fù)責(zé),對同事負(fù)責(zé),對自己的工作負(fù)責(zé)的態(tài)度和榮譽(yù)感。
【編輯推薦】