Skip to content

命名规范 ​

TIP

规定后端项目中类、方法、变量、常量等的命名方式,适用于 Spring Boot 3 + MyBatis-Plus 技术栈。

设计原则 ​

原则说明
见名知意名称应准确表达用途,避免 data、temp、handler 等模糊命名
风格统一同类事物使用同一种命名风格,全项目保持一致
英文优先标识符使用英文,中文仅用于注释与文档
避免缩写除通用缩写(如 id、url、api)外,不使用难懂缩写
禁止拼音不使用拼音或拼音缩写

命名风格速查 ​

类型风格示例
类名(Controller/Service/Mapper)PascalCase + 后缀SysUserController、SysUserService、SysUserMapper
Service 实现类PascalCase + Impl 后缀SysUserServiceImpl
方法camelCase,动词开头findUsers、saveUser、updateUserStatus
变量camelCaseuserId、deptId、conditions
常量UPPER_SNAKE_CASEMAX_RETRY_COUNT、DEFAULT_PAGE_SIZE
PO / DTO 类PascalCaseSysUserPO、SysUserDTO
包名全小写 + 业务域com.guava.admin.controller.sysuser

数据库表名、字段名等命名详见 数据库命名规范。

类命名 ​

Controller ​

  • 格式:业务域 + Controller
  • 位于 controller/ 包下
java
✅ SysUserController
✅ SysDeptController
✅ SysMenuController
❌ UserController        // 缺少 Sys 前缀,与项目命名不一致
❌ sysUserController     // 首字母小写

Service ​

  • 接口:业务域 + Service
  • 实现:业务域 + ServiceImpl
  • 位于 service/ 与 service/impl/ 包下
java
// 接口
✅ SysUserService
✅ SysDeptService

// 实现
✅ SysUserServiceImpl
✅ SysDeptServiceImpl

Mapper / Repository ​

  • 格式:业务域 + Mapper
  • 位于 repository/ 包下
java
✅ SysUserMapper
✅ SysDeptMapper
✅ SysRoleMenuMapper

SQL Provider ​

  • 格式:业务域 + SqlProvider
  • 位于 repository/provider/ 包下
java
✅ SysUserSqlProvider
✅ SysDeptSqlProvider

Feign 接口 ​

  • 格式:目标服务 + FeignService 或 业务 + FeignService
java
✅ RedisUserFeignService
✅ RedisMenuFeignService

方法命名 ​

查询方法 ​

前缀说明示例
find查询列表(分页)findUsers、findDealerUsers
select查询单条selectUserInfoById
get获取详情/属性getUserInfoById、getTransHash
export导出数据exportUserData
count / Count统计数量selectCustomerCount

写入方法 ​

前缀说明示例
save新增保存saveUser、saveUserPosts
update更新操作updateUser、updateUserStatus
delete删除操作deleteUser
insert插入(MyBatis 风格)insertUser

示例 ​

java
// ✅ 动词开头,语义清晰
public IPage<Map<String, Object>> findUsers(Page page, String conditions) { }
public Map<String, Object> saveUser(Map<String, Object> param) { }
public Map<String, Object> updateUser(Long id, Map<String, Object> param) { }

// ❌ 模糊命名
public IPage<Map<String, Object>> getUsers() { }        // get 无法区分是查询列表还是单条
public Map<String, Object> userData() { }               // 无动词
public Map<String, Object> doSave(Map param) { }        // doSave 不清晰

变量命名 ​

java
// ✅ 名词/名词短语
String account = "admin";
Long deptId = 1001L;
String conditions = MyUtil.getConditionsWhere(params, page);

// ✅ 布尔值使用 is / has 前缀
boolean isEmpty = StringUtils.isEmpty(deptId);
boolean hasPermission = checkPermission(userId);

// ❌ 模糊命名
String str = "admin";           // 无意义
Long a = 1001L;                 // 单个字母
Map<String, Object> map = ...;  // 无业务语义

常量命名 ​

java
// ✅ UPPER_SNAKE_CASE
public static final int MAX_RETRY_COUNT = 3;
public static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
public static final Set<Integer> FACTORY_SET = Set.of(100701, 100702);

// ❌ 非全大写下划线
public static final int maxRetryCount = 3;
public static final String defaultFormat = "yyyy-MM-dd";

包命名 ​

  • 全小写,使用域名反转前缀
  • 业务模块按域划分
text
✅ com.guava.admin.controller.sysuser
✅ com.guava.admin.service.sysuser.impl
✅ com.guava.admin.repository.provider
❌ com.guava.admin.Controller.SysUser    // 大写
❌ com.guava.admin.SERVICE               // 全大写

命名 Checklist ​

提交代码前自查:

  • 类名使用 PascalCase,且带有正确后缀(Controller/Service/Mapper/Impl)
  • 方法名使用 camelCase,动词开头,语义清晰
  • 变量名使用 camelCase,无无意义命名(a、temp、data)
  • 常量使用 UPPER_SNAKE_CASE
  • 包名全小写,按业务域划分
  • 无拼音、无无意义缩写
  • 数据库表名、字段名命名符合 数据库命名规范

相关规范 ​