软件编程命名规范
编程命名规范是保证代码可读性、可维护性和团队协作效率的重要基础。以下是涵盖主流编程语言的通用命名规范,结合行业最佳实践和常见规范(如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
强制规范检查。