1. 程式人生 > >PEP8 編碼規範, 及開發中的?一些慣例例和建議

PEP8 編碼規範, 及開發中的?一些慣例例和建議

urn 命名 體積 size family 數學運算 lint 字母 style

首先看下面這段代碼,是否滿足編碼規範

1
from django.conf import settings 2 from user.models import * 3 import sys, os 4 mod=0xffffffff 5 deffoo (a,b=123): 6 c={ x : 111 , y : 222 }#定義?一個字典 d=[ 1 , 3,5 ] 7 return a,b , c 8 9 def bar(x): 10 if x%2==0 : return True
 PEP8編碼規範修改後

1
import os 2 import
sys 3 4 from django.conf import settings 5 from django.core import xxx 6 7 from user.models import User 8 from user.models import Perm 9 10 MOD = 0xffffffff 11 12 13 def foo(a, b=123): 14 ‘‘‘this is foo‘‘‘ 15 c = {x: 111, y: 222} 16 d = [1, 3, 5] 17 return a, b, c 18 19
20 def bar(x): 21 ‘‘‘this is bar‘‘‘ 22 if x % 2 == 0: 23 return True
 


- 為什麽要有編碼規範


編碼是給人看的還是給機器看的?
美觀是重點嗎?
1. 美觀
2. 可讀性
3. 可維護性
4. 健壯性
團隊內最好的代碼狀態: 所有人寫出的代碼像一個人寫出來的

- 代碼編排:


* 縮進 4 個空格, 禁止空格與 Tab 混用
* 行長 80 字符: 防止單行邏輯過於復雜

- import

不要使用 `from xxx import *`
順序

1. 標準庫
2. 第三方庫
3. 自定義庫

單行不要 import 多個庫

模塊內用不到的不要去 import

- 空格

`: ,` 後面跟一個空格, 前面無空格 (行尾分號後無空格)
二元操作符前後各一個空格, 包括以下幾類:

1. 數學運算符: `+ - * / // = & | `
2. 比較運算符: `== != > < >= <= is not in`
3. 邏輯運算符: `and or not`
4. 位運算符: `& | ^ << >>`

  當 `=` 用於指示關鍵字參數或默認參數值時, 不要在其兩側使用空格

- 適當添加空行

* 函數間: 頂級函數間空 2 行, 類的方法之間空 1 行
* 函數內: 同一函數內的邏輯塊之間, 空 1 行
* 文件結尾: 留一個空行 (Unix 中 \n 是文件的結束符)

- 註釋

* 忌: 逐行添加註釋, 沒有一個註釋
* 行尾註釋: 單行邏輯過於復雜時添加
* 塊註釋: 一段邏輯開始時添加
* 引入外來算法或者配置時須在註釋中添加源連接, 標明出處
* 函數、類、模塊盡可能添加 `docstring`

- 命名

* 好的變量名要能做到“詞能達意”
* 除非在 lambda 函數中, 否則不要用 **單字母** 的變量名 (即使是 lambda 函數中的變量名也應該盡可能的有意義)
* 包名、模塊名、函數名、方法、普通變量名全部使用小寫, 單詞間用下劃線連接
* 類名、異常名使用 CapWords (首字母大寫) 的方式, 異常名結尾加 `Error` 或 `Wraning` 後綴
* 全局變量盡量使用大寫, 一組同類型的全局變量要加上統一前綴, 單詞用下劃線連接
* 函數名必須有動詞, 最好是 do_something 的句式, 或者 somebody_do_something 句式

- 語意明確、直白

* `not xx in yy` *VS* `xx not in yy`
* `not a is b` *VS* `a is not b`

- 程序的構建

* 函數是模塊化思想的體現
* 獨立的邏輯應該抽離成獨立函數,讓代碼結構更清晰,可復用度更高
* **一個函數只做一件事情, 並把這件事做好**
* **大的功能用小函數之間靈活組合來完成**
* 避免編寫龐大的程序, **“大” 意味著體積龐大, 邏輯復雜甚至混亂**

- 自定義的變量名、函數名不要與標準庫中的名字沖突

- pip install pycodestyle pylint flake8 autopep8

 

PEP8 編碼規範, 及開發中的?一些慣例例和建議