來自:云棲社區(qū),作者:竹澗

摘要:Any fool can write code that a computer can understand. Good programmers write code that humans can understand. 普通的工程師堆砌代碼,優(yōu)秀的工程師優(yōu)雅代碼,卓越的工程師簡化代碼。

普通的工程師堆砌代碼,優(yōu)秀的工程師優(yōu)雅代碼,卓越的工程師簡化代碼。如何寫出優(yōu)雅整潔易懂的代碼是一門學(xué)問,也是軟件工程實(shí)踐里重要的一環(huán)。筆者推薦三本經(jīng)典的書籍《代碼整潔之道 》、《編寫可讀代碼的藝術(shù)》、《重構(gòu):改善既有代碼的設(shè)計(jì)》,下文重點(diǎn)將從注釋、命名、方法、異常、單元測試等多個方面總結(jié)了一些代碼整潔最佳實(shí)踐,大部分是筆者總結(jié)于以上三本書中的精華,也有部分是筆者工程實(shí)踐的總結(jié)。篇幅有限,本文將總結(jié)性給出一些實(shí)踐建議,后續(xù)會有文章來給出一些代碼整潔之道的事例。

一、注釋

不要給不好的名字加注釋,一個好的名字比好的注釋更重要;

不要“拐杖注釋”,好代碼 > 壞代碼 + 好注釋;

在文件/類級別使用全局注釋來解釋所有部分如何工作;

一定要給常量加注釋;

團(tuán)隊(duì)統(tǒng)一定義標(biāo)記:

TODO 待處理的問題;

FIXME 已知有問題的代碼;

HACK 不得不采用的粗糙的解決方案;

在注釋中用精心挑選的輸入輸出例子進(jìn)行說明;

注釋應(yīng)該聲明代碼的高層次意圖,而非明顯的細(xì)節(jié);

不要在代碼中加入代碼的著作信息,git可以干的事情不要交給代碼;

源代碼中的html注釋是一種厭物, 增加閱讀難度;

注釋一定要描述離它最近的代碼;

注釋一定要與代碼對應(yīng);

公共api需要添加注釋,其它代碼謹(jǐn)慎使用注釋;

典型的爛注釋:

不恰當(dāng)?shù)男畔ⅲ?/p>

廢棄的注釋;

冗余注釋;

糟糕的注釋;

注釋掉的代碼;

唯一真正好的注釋是你想辦法不去寫的注釋:

不要有循規(guī)式注釋,比如setter/getter注釋;

不要添加日志式注釋,比如修改時間等信息;

注釋一定是表達(dá)代碼之外的東西,代碼可以包含的內(nèi)容,注釋中一定不要出現(xiàn);

如果有必要注釋,請注釋意圖,而不要去注釋實(shí)現(xiàn)是一個只有公共變量沒有函數(shù)的類;

對象暴露行為,隱藏?cái)?shù)據(jù);

不要使用“尤達(dá)表示法” 如 if(null == obj),現(xiàn)代編譯器對if(obj = null)這樣的代碼會給出警告;

一般情況使用if else,簡單語句使用三目運(yùn)算符;

通常來講提早返回可以減少嵌套并讓代碼整潔;

八、設(shè)計(jì)

類應(yīng)該足夠短小:

類應(yīng)該滿足單一權(quán)責(zé)原則,類和模塊只有一個修改理由;

類應(yīng)該只有少量的實(shí)體變量;

類應(yīng)該遵循依賴倒置原則 DIP,類應(yīng)該依賴于抽象而不是依賴于具體細(xì)節(jié);

類中的方法越少越好,函數(shù)知道的變量越少越好,類擁有的實(shí)體變量越少越好;

通過減少變量的數(shù)量和讓他們盡量“輕量級”來讓代碼更有可讀性:

減少變量;

縮小變量的作用域;

只寫一次的變量更好,如常量;

最好讀的代碼就是沒有代碼:

從項(xiàng)目中消除不必要的功能,不要過度設(shè)計(jì);

從新考慮需求,解決版本最簡單的問題,只要能完成工作就行;

經(jīng)常性地通讀標(biāo)準(zhǔn)庫的整個API,保持對他們的熟悉程度;

簡單設(shè)計(jì):

運(yùn)行所有測試;

不可重復(fù);

表達(dá)了程序員的意圖;

盡可能減少類和方法的數(shù)量;

以上規(guī)則按重要程度排列;

無論是設(shè)計(jì)系統(tǒng)或者單獨(dú)模塊,別忘了使用大概可工作的最簡單方案;

整潔的代碼只提供一種而非多種做一件事的途徑,他只有盡量少的依賴。明確定義并提供盡量少的API;

減少重復(fù)代碼,提高表達(dá)力,提早構(gòu)建,簡單抽象;

九、小結(jié)

作為代碼整潔之道系列的第一篇,本文從注釋、命名、方法,單元測試,并發(fā)等視角簡單給出了一些最佳實(shí)踐,下文我們會展開來從每個方面介紹更多的實(shí)踐事例。相信每一個優(yōu)秀的工程師都有一顆追求卓越代碼的心,在代碼整潔工程實(shí)踐上你有哪些好的建議?數(shù)百人協(xié)作開發(fā)的代碼如何保證代碼整潔一致性?歡迎大家來討論。

1.《一坨屎案 如何避免自己寫的代碼成為別人眼中的一坨屎》援引自互聯(lián)網(wǎng),旨在傳遞更多網(wǎng)絡(luò)信息知識,僅代表作者本人觀點(diǎn),與本網(wǎng)站無關(guān),侵刪請聯(lián)系頁腳下方聯(lián)系方式。

2.《一坨屎案 如何避免自己寫的代碼成為別人眼中的一坨屎》僅供讀者參考,本網(wǎng)站未對該內(nèi)容進(jìn)行證實(shí),對其原創(chuàng)性、真實(shí)性、完整性、及時性不作任何保證。

3.文章轉(zhuǎn)載時請保留本站內(nèi)容來源地址,http://f99ss.com/shehui/40096.html