1. 整潔代碼
什么是整潔代碼 :可讀性;可維護(hù)性;可拓展性;高效性
為什么需要保持代碼整潔 : 混亂代碼付出的代價(jià)高昂,時(shí)間成本,人力成本
Clean Code 謹(jǐn)記兩個(gè)原則 :
- 勒布朗法則 : Later equals never
- 美國(guó)童子軍軍規(guī) : 讓營(yíng)地比你來(lái)的時(shí)候更干凈
2. 命名
2.1 有意義的命名,通過(guò)命名可以知道變量或函數(shù)的作用
code once, read more 好命名帶來(lái)高效率
2.2 采用統(tǒng)一的命名方式
- 駝峰命名法 : UperCamelCase(大駝峰); lowerCamelCase(小駝峰)
- 匈牙利命名法:在大駝峰的基礎(chǔ)上,加上前綴,前綴用來(lái)表達(dá)類型或用途
2.3 避免命名之間的混淆,做有意義的區(qū)分
- 理清函數(shù)層次關(guān)系,賦予一個(gè)準(zhǔn)確的名字,是十分有必要的
3. 注釋
When I wrote this, only God and I understood what I was doing
Now, Only God knows
什么是最好的注釋 : 沒(méi)有注釋?。。?/h6>
糟糕的代碼是注釋存在的動(dòng)機(jī)之一,代碼在變動(dòng),在演變,不準(zhǔn)確的注釋比沒(méi)注釋更加糟糕,最優(yōu)解那就是通過(guò)代碼自注釋?。。?/p>
必須寫的注釋 :
- 版權(quán)信息: Copyright ... ...
- 對(duì)外API的描述
- 警示
- 等等
壞的注釋 :
- 函數(shù)的注釋,貌似很全,但是參數(shù)的含義啥都沒(méi)說(shuō)明,注釋等于沒(méi)用
- 多余的注釋
- 沒(méi)有同步更新的注釋,容易造成誤導(dǎo)
- 等等
關(guān)于注釋的幾項(xiàng)意見(jiàn)
- 注釋務(wù)必要準(zhǔn)確
- 注釋需要與代碼同步
- 除非必要,盡量代碼自注釋
4. 格式
格式的目的
對(duì)代碼采用一致的格式,這不是浪費(fèi)時(shí)間的愚蠢修飾,而是一種重要的交流工具
- 4.1 概念間垂直方向上的區(qū)隔
在閱讀代碼的時(shí)候,我們的視覺(jué)總是很容易停留在空白行后的第一行。那么,我們可以利用此行為習(xí)慣標(biāo)識(shí)重點(diǎn)、將代碼中的功能區(qū)分隔。比如:函數(shù)申明、變量定義、各個(gè)細(xì)節(jié)功能、函數(shù)之間、重要的算法都建議使用空白行進(jìn)行標(biāo)識(shí)。
- 4.2 垂直方向上的靠近
在如果說(shuō)空白行隔開(kāi)了概念,靠近的代碼則暗示了它們之間的緊密關(guān)系。所以,緊密相關(guān)的代碼應(yīng)該互相靠近。
- 4.3 相關(guān)的函數(shù)緊密相連,方便閱讀分析代碼
概念相關(guān)的代碼應(yīng)該放在一起。相關(guān)性越強(qiáng),彼此之間的距離就該越短。
- 4.4 垂直順序
一般而言,我們想自上而下的展示函數(shù)調(diào)用順序,被調(diào)用的函數(shù)應(yīng)該放在執(zhí)行調(diào)用函數(shù)的下面,這樣我們就建立了一種自頂向下貫穿源代碼模塊的信息流。
- 4.5 保持代碼行短小
代碼行盡量不要超過(guò)80個(gè)字符
- 4.6 水平方向上的區(qū)隔與靠近,對(duì)齊,縮進(jìn)
每個(gè)程序員都有自己喜歡的格式規(guī)則,但在一個(gè)團(tuán)隊(duì)中,需要統(tǒng)一團(tuán)隊(duì)編碼格式
5. 函數(shù)
- 5.1 函數(shù)就該短小
20行左右的代碼最佳
維護(hù)成本小
代碼可讀性好
擁有重用潛力
靈活性好,易于重構(gòu)
代碼質(zhì)量高,錯(cuò)誤無(wú)處遁形
最小化注釋
5.2 單一職責(zé)原則
函數(shù)應(yīng)該做一件事;做好這件事;只做這一件事.
5.3 函數(shù)參數(shù)
參數(shù)越少越好 : 參數(shù)過(guò)多就封裝成結(jié)構(gòu)體
5.4 DRY --- Don't Repeat Yourself
重復(fù)可能是軟件中一切邪惡的根源
函數(shù)最小化,提高重用性
拒絕拷貝,堅(jiān)持重構(gòu),從點(diǎn)滴做起
糟糕的代碼是注釋存在的動(dòng)機(jī)之一,代碼在變動(dòng),在演變,不準(zhǔn)確的注釋比沒(méi)注釋更加糟糕,最優(yōu)解那就是通過(guò)代碼自注釋?。。?/p>
對(duì)代碼采用一致的格式,這不是浪費(fèi)時(shí)間的愚蠢修飾,而是一種重要的交流工具
在閱讀代碼的時(shí)候,我們的視覺(jué)總是很容易停留在空白行后的第一行。那么,我們可以利用此行為習(xí)慣標(biāo)識(shí)重點(diǎn)、將代碼中的功能區(qū)分隔。比如:函數(shù)申明、變量定義、各個(gè)細(xì)節(jié)功能、函數(shù)之間、重要的算法都建議使用空白行進(jìn)行標(biāo)識(shí)。
在如果說(shuō)空白行隔開(kāi)了概念,靠近的代碼則暗示了它們之間的緊密關(guān)系。所以,緊密相關(guān)的代碼應(yīng)該互相靠近。
概念相關(guān)的代碼應(yīng)該放在一起。相關(guān)性越強(qiáng),彼此之間的距離就該越短。
一般而言,我們想自上而下的展示函數(shù)調(diào)用順序,被調(diào)用的函數(shù)應(yīng)該放在執(zhí)行調(diào)用函數(shù)的下面,這樣我們就建立了一種自頂向下貫穿源代碼模塊的信息流。
代碼行盡量不要超過(guò)80個(gè)字符
20行左右的代碼最佳
維護(hù)成本小
代碼可讀性好
擁有重用潛力
靈活性好,易于重構(gòu)
代碼質(zhì)量高,錯(cuò)誤無(wú)處遁形
最小化注釋
5.2 單一職責(zé)原則
函數(shù)應(yīng)該做一件事;做好這件事;只做這一件事.
5.3 函數(shù)參數(shù)
參數(shù)越少越好 : 參數(shù)過(guò)多就封裝成結(jié)構(gòu)體
5.4 DRY --- Don't Repeat Yourself
重復(fù)可能是軟件中一切邪惡的根源
函數(shù)最小化,提高重用性
拒絕拷貝,堅(jiān)持重構(gòu),從點(diǎn)滴做起