編程命名規范是保證代碼可讀性、可維護性和團隊協作效率的重要基礎。以下是涵蓋主流編程語言的通用命名規范,結合行業最佳實踐和常見規范(如Google、Microsoft、Airbnb等風格指南):
一、通用命名原則
- 清晰優先:名稱應準確描述變量/函數的用途(如
calculateTotalPrice()
優于calc()
) - 一致性:整個項目保持相同命名風格(如全用
camelCase
或全用snake_case
) - 避免誤導:
- 布爾變量用
is
/has
開頭(如isLoggedIn
) - 不使用類型前綴(如
strName
已過時)
- 布爾變量用
二、常見命名風格
風格 | 格式示例 | 適用場景 |
---|---|---|
camelCase | userAccount | Java/JavaScript/Go變量/函數 |
PascalCase | UserAccount | C#/Java類名、TypeScript類型 |
snake_case | user_account | Python/Ruby/SQL字段名 |
kebab-case | user-account | CSS類名/URL路徑 |
UPPER_SNAKE | MAX_SIZE | 常量/枚舉值 |
三、具體場景規范
1. 變量命名
- 普通變量:
// Good let orderCount = 5; const MAX_ITEMS = 100;// Bad let oc = 5; // 縮寫不明確
- 集合類型:
# Good users_list = [] # 列表 permissions_dict = {} # 字典# Bad users = [] # 無法區分是單個還是集合
2. 函數/方法命名
- 動作導向:動詞+名詞
// Good public void sendEmail() {...} private String parseJson() {...}// Bad public void email() {...} // 缺少動作描述
- 布爾返回:使用
is
/has
/can
前綴function isValidUser(user) {...}
3. 類與接口
- 類名:名詞或名詞短語(PascalCase)
// Good class PaymentProcessor {...}// Bad class processPayment {...} // 類不是動作
- 接口:
- C#/Java:
I
前綴(如IEnumerable
) - TypeScript:無前綴(如
Logger
)
- C#/Java:
4. 文件與目錄
- 命名規則:
- 組件文件:
PascalCase
(React/Vue)/components/UserProfile.vue
- 工具類:
kebab-case
/utils/date-format.js
- 組件文件:
- 測試文件:
/tests/user-service.spec.ts # 單元測試 /e2e/login.test.js # 端到端測試
四、語言特例
1. JavaScript/TypeScript
- 私有成員:
class User {private _internalId: string; // 下劃線前綴(非強制) }
- 事件處理:
// Good function handleClick() {...} <button onClick={handleClick} />
2. Python
- 模塊命名:全小寫+下劃線
# Good import data_processor# Bad import DataProcessor
- 保護成員:單下劃線前綴
def _internal_method(): ...
3. SQL
- 表與字段:
-- Good CREATE TABLE user_account (id BIGINT PRIMARY KEY,created_at TIMESTAMP );-- Bad CREATE TABLE UserAccount (...) -- 數據庫通常大小寫不敏感
五、特殊場景處理
1. 縮寫規范
- 規則:
- 常用縮寫全大寫(如
XML
/HTTP
) - 非常用縮寫首字母大寫(如
parseXml()
)
- 常用縮寫全大寫(如
- 示例:
// Good class HtmlParser {...} String apiUrl;// Bad class HTMLParser {...} // 不一致
2. 重命名沖突
- 解決方案:
// 添加上下文修飾 string customerName; // 代替 name DateTime orderDate; // 代替 date
3. 測試命名
- 模板:
[UnitOfWork]_[Scenario]_[ExpectedResult]
describe('UserService', () => {it('login_withInvalidCredential_returnsFalse', () => {...}); });
六、工具與自動化
1. 靜態檢查工具
語言 | 工具 | 規則集示例 |
---|---|---|
JavaScript | ESLint | airbnb-base |
Python | flake8 | pep8-naming |
Java | Checkstyle | GoogleChecks |
2. IDE 配置
- VS Code:安裝
EditorConfig
插件統一縮進/換行# .editorconfig [*.js] indent_style = space indent_size = 2
3. 自動格式化
# Prettier 示例
prettier --write "src/**/*.js"# Python black
black .
七、命名禁忌
- 避免單字母名(除循環變量
i/j/k
) - 禁用拼音混合(如
shangpinList
) - 勿用保留字(如
class
、int
) - 禁止特殊字符(如
user@name
)
八、團隊協作建議
- 制定規范文檔:示例:
## 本項目命名規則 - React組件:`PascalCase` - CSS類名:`BEM` 風格(.block__element--modifier)
- 代碼審查:重點關注新人首次提交的命名
- 漸進式改進:使用工具自動修復歷史代碼
通過遵循這些規范,可顯著提升代碼的可讀性和維護性。建議結合項目實際情況調整,并在團隊內通過 git hooks
強制規范檢查。