命名规范
核心原则
命名必须清晰表达意图,避免使用缩写和模糊的单词。好的命名让代码自文档化。
允许的做法
变量命名
- 使用 camelCase(小驼峰)命名普通变量
- 使用 描述性名称,说明变量的用途
- 使用 复数形式表示集合或数组
typescript
// ✅ 正确
const userName = 'Alice';
const productList = [];
const isActive = true;函数/方法命名
- 使用 camelCase(小驼峰)命名函数
- 使用 动词开头,说明函数的操作
- 遵循 get/set/is/has/can 等前缀约定
typescript
// ✅ 正确
function getUserById(id: number) {}
function calculateTotalPrice() {}
function isValidEmail(email: string) {}类/组件命名
- 使用 PascalCase(大驼峰)命名类和组件
- 使用 名词或名词短语
typescript
// ✅ 正确
class UserService {}
class ProductRepository {}
function ProductCard() {} // React 组件常量命名
- 使用 UPPER_SNAKE_CASE 命名全局常量
- 使用 camelCase 命名局部常量
typescript
// ✅ 正确
const MAX_RETRY_COUNT = 3; // 全局常量
const apiBaseUrl = '/api/v1'; // 局部常量文件命名
- 使用 kebab-case(短横线)命名普通文件
- 使用 PascalCase 命名组件文件(React/Vue)
✅ 正确
user-service.ts
product-list.tsx
ProductCard.tsx // React 组件禁止的做法
- 禁止 使用单字母变量(除循环计数器 i, j, k)
- 禁止 使用无意义的名称(如 data, temp, foo)
- 禁止 使用拼音或中英文混合
- 避免 使用过长的名称(超过 30 个字符)
- 避免 使用缩写(除非是通用缩写如 id, url, html)
typescript
// ❌ 错误
const d = new Date(); // 太短
const userData123 = {}; // 无意义数字
const yonghuMingcheng = ''; // 拼音
const userInformationDataObject = {}; // 过长特殊规则
布尔值命名
- 使用 is/has/can/should 前缀
- 表达 肯定含义
typescript
// ✅ 正确
const isActive = true;
const hasPermission = false;
const canEdit = true;
// ❌ 错误
const active = true; // 缺少前缀
const notActive = false; // 否定含义TypeScript 接口/类型
- 使用 PascalCase 命名接口和类型
- 避免 I 前缀(不推荐 IUser)
typescript
// ✅ 正确
interface User {
id: number;
name: string;
}
type ProductStatus = 'active' | 'inactive';Go 语言特殊规则
包命名
- 使用 小写单数形式
- 避免 下划线和驼峰
go
// ✅ 正确
package handler
package service
package model
// ❌ 错误
package handlers // 不使用复数
package myService // 不使用驼峰
package my_package // 不使用下划线结构体和方法
- 使用 PascalCase 导出的标识符
- 使用 camelCase 未导出的标识符
- 使用 简短名称作为接收者(1-2 个字母)
go
// ✅ 正确:导出
type UserService struct {}
func (u *UserService) GetUser(id int64) {}
// ✅ 正确:未导出
type userCache struct {}
func (c *userCache) get(id int64) {}常量命名
- 使用 PascalCase 或 UPPER_SNAKE_CASE
go
// ✅ 正确 - PascalCase
const DefaultPageSize = 20
const MaxUploadSize = 10 * 1024 * 1024
// ✅ 正确 - UPPER_SNAKE_CASE(枚举值)
const (
STATUS_PENDING = "pending"
STATUS_IN_PROGRESS = "in_progress"
STATUS_COMPLETED = "completed"
)