如何優(yōu)雅的為變量和函數(shù)命名

1. 總體原則:

  • 1. 命名和用途一致
  • 2. 能夠望文生義
  • 3. 同一模塊命名風(fēng)格統(tǒng)一

2. 軟技能

    1. 有意義的命名
      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. 避免無意義的命名
    1. 對(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)的縮寫單詞。
    • 名稱過長或過短湿蛔,易讀性都很差膀曾。
    1. 不同代碼段采用不同命名長度
    • 通常循環(huán)計(jì)數(shù)器采用一個(gè)詞命名;
    • 循環(huán)判斷變量采用一個(gè)詞命名阳啥;
    • 方法采用1-2個(gè)單詞命名添谊;
    • 類采用2-3個(gè)單詞命名;
    • 全局變量采用3-4個(gè)詞命名察迟;
    1. 一致的命名風(fēng)格
      a. 符合語言本身的命名規(guī)范要求
      b. 和當(dāng)前模塊的命名風(fēng)格保持一致斩狱,即命名統(tǒng)一
      c. 符合公司的編碼規(guī)范要求
    1. 好的代碼幾乎不需要注釋
      這是優(yōu)雅代碼耳高、可讀性強(qiáng)代碼的終極追求目標(biāo)。(注釋越多意味著代碼可讀性越差)

3. 硬技能

  • 一些約定:

  1. 命名盡量使用全拼單詞所踊。常用縮寫(如:xml泌枪、id),約定俗稱縮寫除外秕岛,如:
名稱 縮寫
function fn
text txt
object obj
context cnt
number num
  1. 下劃線的用法
    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ī)則:

  1. 模塊名&包名
    盡量短小,全部使用小寫像棘,模塊命名允許使用下劃線稽亏,使用名詞;【強(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
  1. 函數(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
  1. 變量名
    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.盡量不使用縮略等其他方式∷猜伲【建議】
  1. 常量命名
    使用全部大寫的方式太伊,可以使用下劃線.【強(qiáng)制】
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市逛钻,隨后出現(xiàn)的幾起案子僚焦,更是在濱河造成了極大的恐慌,老刑警劉巖曙痘,帶你破解...
    沈念sama閱讀 222,104評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件芳悲,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡边坤,警方通過查閱死者的電腦和手機(jī)名扛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來茧痒,“玉大人肮韧,你說我怎么就攤上這事⊥” “怎么了惹苗?”我有些...
    開封第一講書人閱讀 168,697評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長耸峭。 經(jīng)常有香客問我桩蓉,道長,這世上最難降的妖魔是什么劳闹? 我笑而不...
    開封第一講書人閱讀 59,836評(píng)論 1 298
  • 正文 為了忘掉前任院究,我火速辦了婚禮,結(jié)果婚禮上本涕,老公的妹妹穿的比我還像新娘业汰。我一直安慰自己,他們只是感情好菩颖,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評(píng)論 6 397
  • 文/花漫 我一把揭開白布样漆。 她就那樣靜靜地躺著,像睡著了一般晦闰。 火紅的嫁衣襯著肌膚如雪放祟。 梳的紋絲不亂的頭發(fā)上鳍怨,一...
    開封第一講書人閱讀 52,441評(píng)論 1 310
  • 那天,我揣著相機(jī)與錄音跪妥,去河邊找鬼鞋喇。 笑死,一個(gè)胖子當(dāng)著我的面吹牛眉撵,可吹牛的內(nèi)容都是我干的侦香。 我是一名探鬼主播,決...
    沈念sama閱讀 40,992評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼纽疟,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼罐韩!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起污朽,我...
    開封第一講書人閱讀 39,899評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤散吵,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后膘壶,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體错蝴,經(jīng)...
    沈念sama閱讀 46,457評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡洲愤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評(píng)論 3 341
  • 正文 我和宋清朗相戀三年颓芭,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片柬赐。...
    茶點(diǎn)故事閱讀 40,664評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡亡问,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出肛宋,到底是詐尸還是另有隱情州藕,我是刑警寧澤,帶...
    沈念sama閱讀 36,346評(píng)論 5 350
  • 正文 年R本政府宣布酝陈,位于F島的核電站床玻,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏沉帮。R本人自食惡果不足惜锈死,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評(píng)論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望穆壕。 院中可真熱鬧待牵,春花似錦、人聲如沸喇勋。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽川背。三九已至贰拿,卻和暖如春蛤袒,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背壮不。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評(píng)論 1 272
  • 我被黑心中介騙來泰國打工汗盘, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人询一。 一個(gè)月前我還...
    沈念sama閱讀 49,081評(píng)論 3 377
  • 正文 我出身青樓隐孽,卻偏偏與公主長得像,于是被迫代替她去往敵國和親健蕊。 傳聞我的和親對(duì)象是個(gè)殘疾皇子菱阵,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容