六星源課堂:如果一個(gè)人的編碼習(xí)慣很差,會(huì)導(dǎo)致什么結(jié)果?

如果有人問,面向?qū)ο蟮木幊陶Z言都有哪些特點(diǎn),我估計(jì)學(xué)過編程基礎(chǔ)的人都應(yīng)該能講出封裝、繼承和多態(tài)這三個(gè)基本特性!其中,繼承和多態(tài)可能在編程過程中可以選擇不用,但封裝這個(gè)動(dòng)作,我們多多少少都避免不了!可是,如果一個(gè)人的編碼習(xí)慣很差的話,會(huì)導(dǎo)致什么結(jié)果呢?
公司有個(gè)新的項(xiàng)目需要我去做,其中涉及到一個(gè)業(yè)務(wù)邏輯我不是太清楚,于是我們研發(fā)經(jīng)理就讓我去代碼庫拷貝一個(gè)之前的舊項(xiàng)目,那里有相關(guān)源碼。

于是,我從代碼庫里把源碼給拷貝下來了,打開以后著實(shí)把我給嚇著了!據(jù)我所知,這個(gè)舊項(xiàng)目功能其實(shí)也并不復(fù)雜,但是我隨便打開了幾個(gè)項(xiàng)目代碼文件,里面的代碼竟然都超過了千行!大多數(shù)文件的代碼行數(shù)都在2000-8000行左右,而項(xiàng)目的主頁面的代碼行竟然超過了12000行!
可能是我沒做過什么大型項(xiàng)目,在我將近十年的程序員生涯里,寫過的或者接觸過的單代碼文件代碼行數(shù)超過5000行的屈指可數(shù)。而如此“龐大”的代碼行數(shù),還是第一次見!
這個(gè)項(xiàng)目頁面表現(xiàn)上看著簡單,實(shí)在沒想到代碼量會(huì)如此之大。本著對(duì)“前輩”程序員的敬畏之心,我觀摩了一下這個(gè)項(xiàng)目的幾個(gè)代碼行比較大的文件,結(jié)果讓我比較意外!

原來,每個(gè)文件里的代碼行數(shù)之所以這么多,是因?yàn)閷戇@個(gè)項(xiàng)目的人基本上沒有對(duì)任何邏輯代碼進(jìn)行封裝。我甚至看到很多重復(fù)性的邏輯代碼被寫了N次!某處本來只要將不到百行的代碼進(jìn)行封裝,就能節(jié)省將近兩千多行的代碼,但是寫這塊代碼的程序員并沒有這么做!
我稍微看了下,超過12000行的主頁面代碼如果進(jìn)行重構(gòu)的話,代碼行數(shù)至少可以壓縮一半!
但這個(gè)程序員寫的代碼不僅僅只有這些問題,其他問題也非常多,比如涉及到頁面的,并沒有使用組件編寫,而是由一個(gè)個(gè)控件硬拼接而成。因?yàn)槌绦虻慕缑媸穷A(yù)編譯的,只要打開預(yù)編譯的界面,界面渲染都要老半天,更別說去編輯界面了!
最主要的問題是,雖然每個(gè)代碼文件的代碼行數(shù)都很高,但是幾乎沒有看到注釋!可以說,這個(gè)項(xiàng)目是我迄今為止最不想碰到的項(xiàng)目,沒有之一!
之后,我把我的“發(fā)現(xiàn)”告訴了我的研發(fā)組長,結(jié)果引起了他的共鳴,這個(gè)項(xiàng)目的代碼是整個(gè)公司所有程序員最不想碰的代碼!之前編寫這個(gè)項(xiàng)目的是我們公司其中一個(gè)股東,是公司剛成立的時(shí)候他寫的,但是他的代碼似乎是公司的“傳奇”,被其他程序員津津樂道!
像這樣的代碼,不改看著難受,改了怕出問題,所以盡管公司所有人看著這份代碼都很難受,但是都不愿意去重構(gòu)!
所以,有些人真不適合當(dāng)程序員,這樣的程序員寫出來的程序,后面維護(hù)他代碼的程序員容易掉頭發(fā)!所以他是公司股東,我們應(yīng)該值得慶幸!
以上就是本次分享的全部內(nèi)容,想學(xué)習(xí)更多編程技巧,歡迎持續(xù)關(guān)注六星源課堂!