作為一個(gè)苦逼的程序員,因?yàn)榉N種原因經(jīng)常需要閱讀別人寫的代碼。您是否有因代碼雜亂冗余而心生厭惡,您是否有過因代碼晦澀難懂而抓狂,您是因代碼低級(jí)的邏輯錯(cuò)誤而憤概,您是否因代碼結(jié)構(gòu)不合常規(guī)而需要到處查找,您是否因看到幾百甚至上千行代碼的方法而望洋興嘆,您是否因代碼缺少注釋而猜測以及花很多時(shí)間去理清楚前后邏輯。苦逼的我全部遇到過并且很多很多,這些代碼的作者從世界500強(qiáng)頂級(jí)IT公司到幾十人的小公司同事,從印度美國新加坡人到中國人,從七八年的老人到剛?cè)胄械牟锁B。相信您也遇到過。這些人有一些共性,應(yīng)付任務(wù),個(gè)性十足以及不思進(jìn)取!如果您是程序員菜鳥,那么您一定遇到很多并且既是肇事者又是受害者,這是必經(jīng)之路;如果你是業(yè)界大牛,不用說您眼里別人的代碼都或多或少都有問題,遇到的情況更多!
都說代碼是程序員的第二張臉,寫了太爛的代碼背后一定會(huì)遭人鄙視。請(qǐng)遵循一些簡單的規(guī)范,寫干凈一致的代碼!請(qǐng)把您的個(gè)性用在寫出最簡單易懂的代碼上面,而不是晦澀冗余無用的代碼,甚至自我簽名!您的才華應(yīng)該表現(xiàn)在設(shè)計(jì)良好的結(jié)構(gòu)和模式,表現(xiàn)在干凈易懂的代碼,表現(xiàn)在對(duì)空間的尊重,對(duì)代碼的尊重。這樣您才能贏得別人的尊重!請(qǐng)記住代碼不是一次性的,需要重復(fù)的修改和重構(gòu),為未來寫點(diǎn)代碼!以下我總結(jié)幾點(diǎn)Java里面最基本的小規(guī)范:
1. 寫干凈整潔的代碼,請(qǐng)尊重空間,請(qǐng)尊重人眼的偏好
1.1 去除沒有用到的類引用,eclipse里面Ctrl+Shilft+O??吹揭淮笃囊?yàn)轭愐脹]有用到而報(bào)的警告信息簡直就是災(zāi)難,空間和視 覺沒有得到尊重。
1.2 記得格式化代碼,eclipse里面Ctrl+Shilft+F??吹揭淮笃s論無章,連基本的對(duì)齊都沒有的代碼也是很大的災(zāi)難,視覺腦力都會(huì) 受到挑戰(zhàn)。
1.3 不要吝惜廢棄的老代碼,eclipse里面Ctrl+D。有些人對(duì)待已經(jīng)廢棄的老代碼比對(duì)待自己的老婆還寶貝,大量運(yùn)用注釋來保留,隨 著代碼的演變暫用非常大量的空間。如果那段代碼非常精妙,舍不得刪,那么請(qǐng)把它移到您的私人代碼庫。
1.4 請(qǐng)不要寫冗余無用的代碼。if(true)之類的代碼塊完全不應(yīng)該出現(xiàn),用空行隔開該段代碼是更好的選擇。
1.5 請(qǐng)合理運(yùn)用空行??招锌梢杂脕砀糸_相對(duì)獨(dú)立的代碼塊,有利于閱讀和理解。但是不要使用超過一行的空行,對(duì)空間,別太奢 侈了。
1.6 請(qǐng)不要在兩個(gè)地方出現(xiàn)完全相同的代碼,您總是可以想辦法重用的,不是嗎?
1.7 命名類,方法,變量慎用簡寫,全稱我都不一定看得懂,簡稱您太高估我的智商了!請(qǐng)問qrbs代表什么,可能火星人知道吧!
1.8 把所有的類變量放到最前面,如果比較多請(qǐng)按用途分組排列,不要把變量散落在大江南北,我找的真的很辛苦!
1.9 拆分大的類,大的方法,如果您的類有一萬行,如果您的方法有一千行,我真的會(huì)恐懼,是恐懼!
2. 高效運(yùn)用注釋
2.1 規(guī)范的注釋類信息。請(qǐng)查看一下Java標(biāo)準(zhǔn)庫的String.java源碼吧,包括文件名,日期,作者,版本號(hào)等信息,用統(tǒng)一的模板。千 萬別把您的大名散落于方法簽名甚至于具體代碼里面了。我在讀業(yè)務(wù)邏輯的時(shí)候沒有興趣思考您的人生!要找您我可以在類簽名里面找到的,放心??!
2.2 非Java Bean的public方法都需要注釋,您總不會(huì)要?jiǎng)e人讀您的代碼才能調(diào)用您的代碼吧!即便您的英文非常好,命名也非常規(guī) 范,您總不能期待別人都英文好,理解都一樣吧。
2.3 為不容易理解類變量注釋。類變量特別是私有的類變量沒有人要求注釋,但是為了能夠快速的了解您表示的是什么,還是寫點(diǎn) 什么吧!您知道我英文不算好!
2.4 注釋代碼段,注釋邏輯選擇。上面提到運(yùn)用空行分割開邏輯相對(duì)獨(dú)立的代碼,那么請(qǐng)?jiān)诳招械南乱恍幸矊扅c(diǎn)下面代碼段要干什 么的語句吧。 如果有if else等邏輯選擇的時(shí)候,麻煩也花幾秒鐘寫上判斷的依據(jù)和結(jié)果好嗎?邏輯難懂且關(guān)鍵,您懂的!
3. 不斷學(xué)習(xí),不斷思考,不斷實(shí)踐,更上一層樓
3.1 遇到不懂的,請(qǐng)先google,一定要學(xué)會(huì),不然就一直不會(huì)了,回頭發(fā)現(xiàn)工作六七年沒有工作兩年的小朋友懂的多!
3.2 看別人代碼時(shí)要汲取好的方法和技巧。
3.3 接觸一項(xiàng)技術(shù)要升入了解和實(shí)踐,請(qǐng)問您做過的系統(tǒng)您現(xiàn)在都可以從零開始搭建起來了嗎,我的意思是架構(gòu)搭建哦!
3.4 書里面有知識(shí),有思想,有時(shí)間的話還是多精讀基本經(jīng)典書籍吧。您會(huì)受益匪淺!
以上只是一點(diǎn)個(gè)人的想法,您可以接受或者反駁。謝謝您的時(shí)間,就這樣!