作為一名java開發(fā)工程師,對于這個問題我算是比較有感觸的,所以想說說我對java開發(fā)的一些看法,純屬個人意見,不喜輕噴!
什么樣的代碼算是高質(zhì)量代碼,或者說是高質(zhì)量代碼的特征?在我看來,主要就是在于可讀性、易擴展兩方面。
首先,我覺得最重要是要可讀性高。為什么這么說呢?相信做過開發(fā)的朋友都知道,互聯(lián)網(wǎng)公司的人員流動率還是比較高的,可能出現(xiàn)的情況是領(lǐng)導突然跟你說,你去交接一下某某某同事的工作,而交接的時候一般情況主要是業(yè)務(wù)流程、功能模塊來交接,大概率不會一行一行的代碼去讀。如果項目正常運轉(zhuǎn),不出問題、也沒有需求變更(大概率需求會變更),那就是你好我好大家好,如果出了問題或者需求變更,還是之前同事的那些模塊,那就必須得去啃代碼了。這個時候代碼的易讀性就顯得非常重要了。你可以試想一下,通篇沒有一句注釋、一個方法幾百行、if/else滿天飛、方法之間參數(shù)傳遞全是map、sql語句各種嵌套子查詢、關(guān)聯(lián)查詢7-8個表,當你看到這樣的代碼,估計心里頓時萬馬奔騰,怒火蹭蹭蹭的往頭上涌去。所以我覺得可讀性是第一要素。
其次,擴展性要好。這個也很好理解,現(xiàn)在是信息時代,流量為王,為了提高市場占有率,普遍需求變更頻繁,2周一次發(fā)布都是正常頻率。在這種頻繁需求變更的情況下,如果代碼的擴展性不高,每一次需求都需要大量改動代碼,即耗費時間還容易出錯,比如漏改某處地方而引起其他功能異常。所以開發(fā)過程中要注意代碼擴展性,當然也不要去過分設(shè)計,讓代碼晦澀難懂。
高質(zhì)量代碼在開發(fā)中的意義?《計算機程序的構(gòu)造和解釋》一書提到代碼是寫給人看的,不是寫給機器看的,只是順便計算機可以執(zhí)行而已。如果代碼是寫給機器看的,那完全可以使用匯編語言或者機器語言(二進制),直接讓機器執(zhí)行。所以代碼一定要讓人容易理解。高質(zhì)量代碼的好處:
好的代碼讀起來令人賞心悅目,比如java里的spring、mybatis等框架,讀源碼時常常不自覺發(fā)出驚嘆,代碼原來還可以這么寫!
質(zhì)量高意味著維護成本低,運行穩(wěn)定
質(zhì)量高意味著擴展性強,方便業(yè)務(wù)開發(fā)
如何去寫高質(zhì)量代碼?對于做java的來說,我建議去看一下《阿里巴巴Java開發(fā)手冊》。
手冊以 Java 開發(fā)者為中心視角,劃分為編程規(guī)約、異常日志、單元測試、安全規(guī)約、MySQL 數(shù)據(jù)庫、工程結(jié)構(gòu)、設(shè)計規(guī)約七個維度,再根據(jù)內(nèi)容特征,細分成若干二級子目錄。根據(jù)約束力強弱及故障敏感性,規(guī)約依次分為強制、推薦、參考三大類。對于規(guī)約條目的延伸信息中,“說明”對規(guī)約做了適當擴展和解釋;“正例”提倡什么樣的編碼和實現(xiàn)方式;“反例”說明需要提防的雷區(qū),以及真實的錯誤案例。 摘自《阿里巴巴 Java 開發(fā)手冊》最后推薦一下阿里巴巴代碼規(guī)范掃描插件,以IDEA為例,安裝如下
使用如下: