Python最簡編碼規範

前言

本文是閱讀《Python Coding Rule》以後總結的最爲精華及簡單的編碼規範,根據每一個人不一樣喜愛有些地方會有不一樣的選擇,我只是作了對本身來講最簡單易行的選擇,僅供你們參考。函數

重要原則

  1. 保持風格的一致性很重要,但最重要的是:知道什麼時候不一致
  2. 打破一條既定規則的兩個好理由:
    • 當應用規則會致使代碼可讀性降低(可讀性賽高)
    • 爲了和周圍代碼保持一致而打破規則(歷史遺留)

最簡規範

  1. 只使用空格縮進
  2. 使用UTF-8編碼
  3. 每行只寫一條語句
  4. 使用行末反斜槓摺疊長行,限制每行最大79字符
  5. 導入包:每行惟1、從大到小、絕對路徑
  6. 類內方法空1行分隔,類外空2行分隔
  7. 運算符除 * 外,兩邊空1格分隔,函數參數=周圍不用空格
  8. 除類名使用駝峯法之外,其餘模塊、函數、方法、變量均使用全小寫+下劃線
  9. 1個前導下劃線表示半公開,2個前導下劃線表示私有,與保留字區分使用單個後置下劃線
  10. 開發時使用中文註釋,發佈時再寫英文文檔

詳細規範

全文通用

  1. 只使用空格縮進,4個空格表示1個縮進層次
  2. 每行長度限制在79字符內,使用行末反斜槓摺疊長行
  3. 使用UTF-8編碼
  4. 每行只寫一條語句

代碼命名

  1. 一行只import一個包,Imports的順序爲:標準庫、相關主包、特定應用,每組導入之間放置1行空行,全部導入使用包的絕對路徑
  2. 分割頂層函數和類的定義使用2行空行,分割類內方法定義使用1行空行,class行與第一個方法定義之間要有1行空行
  3. 總體使用英文書寫方式來使用空格,即僅在逗號、分號後面添加1個空格,其餘任何符號如圓括號、方括號、花括號等都不用空格把符號與字符分開,寫在一塊兒表示一個總體;運算符除 * 號之外,其餘符號兩邊都各用1個空格分隔;函數參數=號周圍不用空格
  4. 模塊名:不含下劃線、簡短、全小寫;類名、異常名:首字母大寫單詞串的駝峯法;函數名、全局變量名、方法名、實例變量:全小寫,加下劃線增長可讀性;一個前導下劃線僅用於不想被導入的全局變量(還有內部函數和類)前加一個下劃線)、不打算做爲類的公共接口的內部方法和實例變量;兩個前導下劃線以表示類私有的名字,只用來避免與類(爲能夠子類化所設計)中的屬性發生名字衝突
  5. 私有屬性必須有兩個前導下劃線,,無後置下劃線;非公有屬性必須有一個前導下劃線,無後置下劃線。公共屬性沒有前導和後置下劃線,除非它們與保留字衝突,此狀況下,單個後置下劃線比前置或混亂的拼寫要好,例如:class_優於klass。

編寫技巧

  1. 與None之類的單值比較,永遠用:'is'或'is not'來作:if x is not None
  2. 在模塊和包內定義基異常類(base exception class)
  3. 使用字符串方法(methods)代替字符串模塊
  4. 在檢查前綴或後綴時避免對字符串進行切片,用startswith()和endswith()代替,如:No: if foo[:3] == 'bar':Yes: if foo.startswith('bar'):
  5. 只用isinstance()進行對象類型的比較,如:No: if type(obj) is type(1):Yes: if isinstance(obj, int)
  6. 判斷True或False不要用 ==,如:No: if greeting == True:Yes: if greeting:

註釋

  1. 開發時,註釋所有用中文來寫,當要發佈腳本工具時,再寫英文文檔
  2. 註釋應該是是完整的句子(短語也可),首字母大寫;若是註釋很短,省略末尾句號;註釋塊由一個or多個完整句子構成的段落組成,則每一個句子使用句子結尾;句末句號後使用兩個空格
  3. 註釋塊每行以#和一個空格開始,而且跟隨註釋的代碼具備相同的縮進層次,註釋塊上下方有一空行包圍
  4. 謹慎使用行內註釋,至少使用兩個空格與語句分開
  5. 使用 pydoc; epydoc; Doxgen 等文檔化工具,爲全部公共模塊、函數、類和方法邊寫文檔字符串,文檔字符串對非公開的方法不是必要的,但你應該有一個描述這個方法作什麼的註釋,這個註釋應該在"def"這行後
  6. 多行文檔字符串結尾的""" 應該單獨成行
  7. 版本註記:定義一個變量__version__ = "$Revision: 1.4 $"
相關文章
相關標籤/搜索