自從開始工作到現(xiàn)在也有一年半了,也算個小菜雞,剛開始工作受前輩影響,加上自己稍微的強迫癥,對代碼規(guī)范十分看重,如果代碼是磚頭的話,代碼規(guī)范就是圖紙,是圖紙,是砌磚的方式,誰都不想自己家建的亂七八糟吧。
簡單寫寫平時注意的規(guī)范吧,基本都是對照阿里規(guī)范來進(jìn)行的,本文是通過阿里規(guī)范認(rèn)證之后寫的,算是對之前一直遵循的規(guī)范和阿里規(guī)范學(xué)習(xí)的一個總結(jié)吧
1,千萬不要在代碼中成段的注釋代碼,不要的代碼刪了就是了,留著過年啊,一頁的代碼,大部分注釋掉,然后中間穿插可執(zhí)行代碼,簡直沒法看。當(dāng)然阿里規(guī)范有一條是自己之后會用到的,加///注釋掉,這個是基于沒提交過倉庫的代碼,如果是以前倉庫提交過的,不用的,也直接刪掉,想找回直接在倉庫中找回。
2,參數(shù)封裝POJO類,方便參數(shù)擴展和可維護(hù)。
舉例:
public String get(Integer a, Long b, Integer c, String d, String e, Integer f, String g,
String h, String i, Integer g, String k) throws IOException {
這種代碼完全不知道,入?yún)⑹鞘裁?,估計只有開發(fā)人員知道了,可維護(hù)性太差。
3,try-catch,只封裝可能出現(xiàn)RuntimeException的地方,不要圖省事成片catch,成片catch也無所謂,最怕那種不try-catch,還有catch中,加錯誤日志,打入?yún)⒑彤惓?,不要直接打e.getMessage(),更有甚者,直接e.printStackTrace();,要不報錯都沒法查,也可以用ExceptionHandler注解來catch RuntimeException。還有接口錯誤信息不要把異常棧直接傳給調(diào)用方,傳給調(diào)用方是想著讓調(diào)用方給你查bug還是怎么,還有的接口是直接給前端用的,把異常棧信息傳出去就要被笑話了。
4,使用衛(wèi)語句,經(jīng)常看到別人寫的代碼,if else五六層,簡直了,衛(wèi)語句很好的解決了這個問題。
5,多用ctrl+alt+m,提方法,別一個方法寫那么長,讓別人看不懂,一個方法長了,完全可以提子邏輯方法,主方法放子邏輯方法的調(diào)用,一眼就能知道子邏輯方法是干嘛的,很清晰。
6,提常量,不要代碼中成篇魔數(shù),讓別人沒法看,如果常量是一個范圍,提枚舉類,成篇的魔數(shù)直接讓接鍋的人崩潰。
7,多用Lombok,簡化代碼,看著爽
8,應(yīng)用結(jié)構(gòu),一個好的應(yīng)用結(jié)構(gòu),好比樓房,每層是干嘛的,更加合理,使得可讀性和可維護(hù)性更高,可以參考阿里應(yīng)用結(jié)構(gòu)規(guī)范,個人喜歡api放參數(shù)校驗,結(jié)果封裝等,把邏輯交給service,dao放數(shù)據(jù)庫相關(guān)操作。
9,注意防止NPE的產(chǎn)生,任何可能產(chǎn)生NPE的地方都要加判斷
10,列表接口必須分頁, 同時增加page size 過大校驗。
代碼規(guī)范最重要最重要的是code review,誰都會寫垃圾代碼,code review是垃圾代碼的一道防線
阿里規(guī)范還有就是數(shù)據(jù)庫的一些規(guī)范,建庫建表,索引知識等,還有單元測試的,就先不寫了,可以去看。
本文太多的細(xì)節(jié)沒寫,就先寫自己第一時間想到的,以后有機會補充