1. 總體原則:
- 1. 命名和用途一致
- 2. 能夠望文生義
- 3. 同一模塊命名風(fēng)格統(tǒng)一
2. 軟技能
- 有意義的命名
a. 變量名能夠精準(zhǔn)的反映他的含義和內(nèi)容(變量名,通常是名詞 或 名詞短語)铜幽。
b.方法名能夠準(zhǔn)確的表達(dá)該方法的行為(方法名,通常是動(dòng)詞 或 動(dòng)賓結(jié)構(gòu))
如:insert、append比add更能精準(zhǔn)的表達(dá)含義; 盡可能使用email代替emailAddress硅瞧,因?yàn)楹笳卟⑽刺峁┍惹罢吒嗟男畔?/strong>
c. 方法參數(shù)名能夠自解釋(即沒有文檔的情況下,能夠自解釋)
d. 避免無意義的命名
- 對(duì)變量采用具體含義的單詞命名恕汇。
即不采用過于抽象腕唧、廣泛的單詞命名。如:get()有些抽象瘾英,不夠具體枣接。
# 一個(gè)好的例子:
def get_book_price() # 簡單的返回?cái)?shù)據(jù)
def fetch_book_list() # 從遠(yuǎn)程獲取數(shù)據(jù)
def load_book_context() # 從其他地方加載數(shù)據(jù)
- 3.易讀性
- 可讀性強(qiáng)、易懂缺谴,盡量不要用縮寫或簡寫單詞但惶。除非公認(rèn)的縮寫單詞。
- 名稱過長或過短湿蛔,易讀性都很差膀曾。
- 不同代碼段采用不同命名長度
- 通常循環(huán)計(jì)數(shù)器采用一個(gè)詞命名;
- 循環(huán)判斷變量采用一個(gè)詞命名阳啥;
- 方法采用1-2個(gè)單詞命名添谊;
- 類采用2-3個(gè)單詞命名;
- 全局變量采用3-4個(gè)詞命名察迟;
- 一致的命名風(fēng)格
a. 符合語言本身的命名規(guī)范要求
b. 和當(dāng)前模塊的命名風(fēng)格保持一致斩狱,即命名統(tǒng)一
c. 符合公司的編碼規(guī)范要求
- 好的代碼幾乎不需要注釋
這是優(yōu)雅代碼耳高、可讀性強(qiáng)代碼的終極追求目標(biāo)。(注釋越多意味著代碼可讀性越差)
3. 硬技能
-
一些約定:
- 命名盡量使用全拼單詞所踊。常用縮寫(如:xml泌枪、id),約定俗稱縮寫除外秕岛,如:
名稱 | 縮寫 |
---|---|
function | fn |
text | txt |
object | obj |
context | cnt |
number | num |
- 下劃線的用法
a. 前導(dǎo)下劃線碌燕,表示私有。 如: private_func
b. 后綴下劃線瓣蛀,避免關(guān)鍵字沖突吱韭。如: id
c. 兩個(gè)前導(dǎo)下劃線馆匿,避免繼承時(shí)類屬性重名沖突。如: __class_var
d. 兩個(gè)前導(dǎo)和后綴下劃線堕伪,特殊用途的對(duì)象或?qū)傩浴?僅使用改鲫,不創(chuàng)造诈皿。
-
規(guī)則:
- 模塊名&包名
盡量短小,全部使用小寫像棘,模塊命名允許使用下劃線稽亏,使用名詞;【強(qiáng)制】
#好的命名
import decoder
import html_parser
#不好的命名
import Decoder
2.類名
a. 采用名詞缕题,駝峰命名法截歉,首字母大寫,多個(gè)詞組合時(shí)每個(gè)詞的首字母大寫烟零;【強(qiáng)制】b.名稱中有縮寫名詞時(shí)縮寫名全大寫瘪松。如HTTPServerError優(yōu)于HttpServerError
c. 異常類名建議使用CapWords+Error后綴的方式;【強(qiáng)制】
d. 私有類锨阿,用下劃線開頭
# 好的命名:
class WSGIInterfaceError():
pass
class AnimalFarm():
pass
class _PrivateFarm():
pass
# 不好的命名:
class WsgiInterfaceError():
pass
class kill_apple(killfood):
pass
- 函數(shù)名
a. 函數(shù)命名采用動(dòng)賓結(jié)構(gòu)宵睦,各個(gè)詞中間采用下劃線隔開,不使用少于三個(gè)字符的函數(shù)名字;【強(qiáng)制】
b.私有函數(shù)墅诡,下劃線開頭
#好的命名:
def create_dvs():
pass
def get_dvs_by(id):
pass
def _filter_vr_by(filters):
pass
# 不好的命名:
def get_bvs_id_from_dvs_id(dvs_id): # 好的命名 def get_bvs_id_by(dvs_id)
pass
- 變量名
a. 使用全小寫加下劃線壳嚎,不使用單個(gè)字符或縮寫字符的變量名;【強(qiáng)制】
b. 禁止使用全局變量末早,采用類加靜態(tài)變量的方式實(shí)現(xiàn)烟馅;【強(qiáng)制】
c. 變量名字不能隱藏內(nèi)部名字(內(nèi)部變量優(yōu)先于外部變量);【強(qiáng)制】
d. 有文檔輔助的接口然磷,比如sdk焙糟,命名應(yīng)當(dāng)短小精練,不能帶類型样屠,在業(yè)務(wù)流程代碼穿撮,缺少文檔的命名缺脉,比如局部變量,文件全局變量悦穿,應(yīng)該有類型標(biāo)識(shí)攻礼;【建議】
e. 若與關(guān)鍵字名字沖突,后綴一下劃線栗柒,如:id_礁扮。[建議]
f.盡量不使用縮略等其他方式∷猜伲【建議】
- 常量命名
使用全部大寫的方式太伊,可以使用下劃線.【強(qiáng)制】