命名规范
# 代码命名指南
好的命名能体现出代码的特征,含义或者是用途,让阅读者可以根据名称的含义快速厘清程序的脉络。
# Java 命名规范:
类型 | 约束 | 例 |
---|---|---|
项目名 | 全部小写,多个单词用中划线分隔‘-’ | spring-cloud |
包名 | 统一使用小写 | com.alibaba.fastjson |
类名 | 单词首字母大写(大驼峰) | Feature, ParserConfig,DefaultFieldDeserializer |
常量名 | 全部大写,多个单词,用'_'分隔 | CACHE_EXPIRED_TIME |
变量名 | 首字母小写,多个单词组成时,除首个单词,其他单词首字母都要大写 | password, userName |
方法 | 小驼峰(与变量名一样) | read(), readObject(), getById() |
# 包命名详解
包名的构成可以分为以下几四部分【前缀】【发起者名】【项目名】【模块名】。
常见的前缀可以分为以下几种:
前缀名 | 示例 | 含义 |
---|---|---|
indi、onem | indi.发起者名.项目名.模块名.…… | 个体项目,指个人发起,但非自己独自完成的项目,可公开或私有项目,copyright 主要属于发起者。 |
pers | pers.个人名.项目名.模块名.…… | 个人项目,指个人发起,独自完成,可分享的项目,copyright 主要属于个人 |
priv | priv.个人名.项目名.模块名.…… | 私有项目,指个人发起,独自完成,非公开的私人使用的项目,copyright 属于个人。 |
team | team.团队名.项目名.模块名.…… | 团队项目,指由团队发起,并由该团队开发的项目,copyright 属于该团队所有 |
顶级域名 | com.公司名.项目名.模块名.…… | 公司项目,copyright 由项目发起的公司所有 |
# 类命名详解
大驼峰形式
属性 | 约束 | 例 |
---|---|---|
抽象类 | Abstract 或者 Base 开头 | BaseUserService |
枚举类 | Enum 作为后缀 | GenderEnum |
工具类 | Utils 作为后缀 | StringUtils |
异常类 | Exception 结尾 | RuntimeException |
接口实现类 | 接口名+ Impl | UserServiceImpl |
领域模型相关 | /DO/DTO/VO/DAO(全大写) | 正例:UserDAO 反例:UserDo, UserDao |
设计模式相关类 | Builder,Factory 等 | 当使用到设计模式时,需要使用对应的设计模式作为后缀,如 ThreadFactory |
处理特定功能的 | Handler,Predicate, Validator | 表示处理器,校验器,断言,这些类工厂还有配套的方法名如 handle,predicate,validate |
测试类 | Test 结尾 | UserServiceTest, 表示用来测试 UserService 类的 |
MVC 分层 | Controller,Service,ServiceImpl,DAO 后缀 | UserManageController,UserManageDAO |
/DO/DTO/VO/DAO 的含义是什么?
这四种类命名是根据设计模式中的分层思想来命名的:
- DO(Data Object):数据对象,主要用于封装与数据库表对应的数据,包括实体类的定义、属性及属性的 get/set 方法等。一般情况下,DO 对象与数据库表中的字段一一对应。
- DTO(Data Transfer Object):数据传输对象,主要用于封装业务逻辑层之间传输的数据,例如远程调用等。DTO 对象通常包含多个 DO 对象的属性,以及其他业务逻辑相关的属性和方法。(√)
- VO(Value Object):值对象,主要用于封装视图层需要展示的数据,例如展示在前端页面的数据。VO 对象通常只包含少量属性,是从DTO对象中抽取出来的。(√)
- DAO(Data Access Object):数据访问对象,主要用于封装与数据库的交互操作,例如增删改查等。DAO 对象通常与数据库表一一对应,提供对数据库的操作方法。
这种分层设计方式可以有效地降低各个层次之间的耦合度,提高代码的可维护性和可扩展性。
相应的 四种包,以及 entity 包等。均可放在 model 包下统一进行管理。
# URL 命名规范
全小写,多个单词用 "-
" 拼接。
# 【阿里】各层命名规约
A)Service / DAO 层方法命名规约:
1)获取单个对象的方法用 get 做前缀。
2)获取多个对象的方法用 list 做前缀,复数结尾,如:listObjects
3)获取统计值的方法用 count 做前缀。
4)插入的方法用 save / insert 做前缀。
5)删除的方法用 remove / delete 做前缀。
6)修改的方法用 update 做前缀。
B)领域模型命名规约:
1)数据对象:xxxDO,xxx 即为数据表名。
2)数据传输对象:xxxDTO,xxx 为业务领域相关的名称。
3)展示对象:xxxVO,xxx 一般为网页名称。
4)POJO 是 DO / DTO / BO / VO 的统称,禁止命名成 xxxPOJO。
# 参考
上次更新: 2024/9/25 11:16:13