程序員版本的八榮八恥~

前言
大家好。
最近整理了一個關(guān)于程序員日常開發(fā)版本的八榮八恥,還挺有意思的。給大家分享一下,哈哈~

1. 以接口兼容為榮,以接口裸奔為恥
以接口兼容為榮,怎么理解呢?
很多bug都是因為修改了對外舊接口,但是卻不做兼容導(dǎo)致的。關(guān)鍵這個問題多數(shù)是比較嚴重的,可能直接導(dǎo)致系統(tǒng)發(fā)版失敗的。新手程序員很容易犯這個錯誤。所以我們修改老接口的時候,一般要做好兼容。

如果你的需求是在原來接口上修改,尤其這個接口是對外提供服務(wù)的話,一定要考慮接口兼容。舉個例子吧,比如dubbo接口,原本是只接收A,B參數(shù),現(xiàn)在你加了一個參數(shù)C,就可以考慮這樣處理:
//老接口
void?oldService(A,B){
??//兼容新接口,傳個null代替C
??newService(A,B,null);
}
//新接口,暫時不能刪掉老接口,需要做兼容。
void?newService(A,B,C){
??...
}
我們還要以接口裸奔為恥。為了保證接口報文的安全性,拒絕接口報文裸奔。因此,我們可以使用https協(xié)議,還建議對接口加簽驗簽處理,數(shù)據(jù)加密等。
接口簽名很簡單,就是把接口請求相關(guān)信息(請求報文,包括請求時間戳、版本號、appid等),客戶端私鑰加簽,然后服務(wù)端用公鑰驗簽,驗證通過才認為是合法的、沒有被中間人篡改過的請求。
有關(guān)于加簽驗簽的,大家可以看下我這篇文章哈,程序員必備基礎(chǔ):加簽驗簽
2. 以規(guī)范日志為榮,以亂打日志為恥
我們的業(yè)務(wù)邏輯代碼需要日志保駕護航。比如:你實現(xiàn)轉(zhuǎn)賬業(yè)務(wù),轉(zhuǎn)個幾百萬,然后轉(zhuǎn)失敗了,接著客戶投訴,然后你還沒有打印到日志,想想那種水深火熱的困境下,你卻毫無辦法。。。
因此大家要打好日志,比如日志級別使用恰當,日志格式,在哪些地方打日志,參數(shù)打印哪個等等。不能亂打日志,要以規(guī)范日志為榮,亂打日志為恥。

3. 以代碼自測為榮,以過度自信為恥
修改完代碼,要自測一下,這個是每個程序必備的素養(yǎng),即使你只是修改了一個變量或者一個字段。
要杜絕過度自信,尤其不要抱有這種僥幸心理:我只是改了一個變量或者我只改了一行配置的代碼,不用自測了,怎么可能有問題。

因此,我們要以代碼自測為榮,以過度自信為恥。
4. 以參數(shù)校驗為榮,以運行異常為恥
參數(shù)校驗是每個程序員必備的基本素養(yǎng)。你的方法處理,必須先校驗參數(shù)。比如入?yún)⑹欠裨试S為空,入?yún)㈤L度是否符合你的預(yù)期長度。因此,我們要以參數(shù)校驗為榮。
比如你的數(shù)據(jù)庫表字段設(shè)置為
varchar(16),對方傳了一個32位的字符串過來,如果你不校驗參數(shù),插入數(shù)據(jù)庫直接異常了。

我們要以運行時異常為恥。
比如你沒有做好一些非空校驗,數(shù)組邊界校驗等等,導(dǎo)致的空指針異常、數(shù)組邊界異常,尤其這些運行時異常還發(fā)生在生產(chǎn)環(huán)境的話,在有經(jīng)驗的程序員看來,這些錯誤行為會顯得特別低級。
所以,我們要以參數(shù)校驗為榮,以運行異常為恥。
5. 以設(shè)計模式為榮,以代碼重復(fù)為恥
日常工作中,我們要以設(shè)計模式為榮。
比如策略模式、工廠模式、模板方法模式、觀察者模式、單例模式、責(zé)任鏈模式等等,都是很常用的。在恰當?shù)臉I(yè)務(wù)場景,我們還是把設(shè)計模式用上吧。設(shè)計模式可以讓我們的代碼更優(yōu)雅、更具有擴展性。但是不要過度設(shè)計哈,不要硬套設(shè)計模式。
我們還要以重復(fù)代碼為恥。重復(fù)代碼,我相信每個程序員都討厭的,尤其有時候你的開發(fā)工具還會給你提示出來。我們可以抽取公共方法,抽取公用變量、擴展繼承類等方式去消除重復(fù)代碼。

大家如果對設(shè)計模式還不是很熟悉的話,可以多看幾遍我的這篇文章哈:實戰(zhàn)!工作中常用到哪些設(shè)計模式
6. 以優(yōu)化代碼為榮,以復(fù)制粘貼為恥
日常開發(fā)中,很多程序員在實現(xiàn)某個功能時,如果看到老代碼有類似的功能,他們很喜歡復(fù)制粘貼過來。這樣很容易產(chǎn)生重復(fù)代碼,所以我們要以復(fù)制粘貼為恥。一般建議加自己的思考,怎么優(yōu)化這部分代碼,怎么抽取公用方法,用什么設(shè)計模式等等。

個人覺得,優(yōu)化代碼的過程,可以讓自己取得更大的進步。因此我們要以優(yōu)化代碼為榮,以復(fù)制粘貼為恥。
7. 以定義常量為榮,以魔法數(shù)字為恥
大家平時工作中,是不是經(jīng)常看到魔法數(shù)字。魔法數(shù)字(Magic Number)是指擁有特殊意義,卻又不能明確表現(xiàn)出這種意義的數(shù)字。程序里面存在魔法數(shù)字,易讀性很差,且非常難以維護。
如下:
if(type==1){
???System.out.println("關(guān)注公眾號:撿田螺的小男孩");
}else?if(type==2){
???System.out.println("關(guān)注公眾號:程序員田螺");
}else{
???System.out.println("關(guān)注其他公眾號");
}
代碼中的1、2就表示魔法數(shù)字,我們可以用常量取代魔法數(shù),或者定義枚舉去代替魔法數(shù)字哈。
8. 以總結(jié)思考為榮,以混水摸魚為恥。
我們要以總結(jié)思考為榮。
比如你看完文章,可以總結(jié)思考一下,或者做做筆記,或者放到收藏夾,茶余飯后再看看。再比如你日常工作中,看到一段不錯的代碼,也可以思考一下亮點在哪里,如果是你自己來寫的話,怎么寫出更好的代碼。反正就是要多總結(jié),多思考,多復(fù)習(xí),溫故而知新嘛。
我們要以混水摸魚為恥。比如工作中,一些小伙伴喜歡混水摸魚,當一天和尚敲一天鐘,代碼多是復(fù)制粘貼,做完需求就摸魚。實際上這個不可取的。

我們要在工作中成長,通過認真工作,使自己會得更多,將來換工作也可以拿到更高的薪水,對吧,加油吧,小伙子,以總結(jié)思考為榮,以混水摸魚為恥。
最后
如果這篇文章對您有所幫助,或者有所啟發(fā)的話,求一鍵三連:點贊、轉(zhuǎn)發(fā)、在看,您的支持是我堅持寫作最大的動力。
