沉梦听雨的编程指南 沉梦听雨的编程指南
首页
  • 基础篇
  • 集合篇
  • 并发篇
  • JVM
  • 新特性
  • 计算机网络
  • 操作系统
  • 数据结构与算法
  • 基础篇
  • MySql
  • Redis
  • 达梦数据库
  • Spring
  • SpringBoot
  • Mybatis
  • Shiro
  • 设计须知
  • UML画图
  • 权限校验
  • 设计模式
  • API网关
  • RPC
  • 消息队列
  • SpringCloud
  • 分布式事务
  • 云存储
  • 搜索引擎
  • 多媒体框架
  • 虚拟机
  • 开发工具篇
  • 工具库篇
  • 开发技巧篇
  • 工具类系列
  • 随笔
  • 前端环境搭建
  • HTML与CSS
  • JS学习
  • Vue3入门
  • Vue3进阶
  • 黑马Vue3
  • 脚手架搭建
  • 瑞吉外卖
  • 黑马点评
  • vue-blog
  • 沉梦接口开放平台
  • 用户中心
  • 聚合搜索平台
  • 仿12306项目
  • 壁纸小程序项目
  • RuoYi-Vue
  • 博客搭建
  • 网站收藏箱
  • 断墨寻径摘录
  • 费曼学习法
Github (opens new window)

沉梦听雨

时间是最好的浸渍剂,而沉淀是最好的提纯器🚀
首页
  • 基础篇
  • 集合篇
  • 并发篇
  • JVM
  • 新特性
  • 计算机网络
  • 操作系统
  • 数据结构与算法
  • 基础篇
  • MySql
  • Redis
  • 达梦数据库
  • Spring
  • SpringBoot
  • Mybatis
  • Shiro
  • 设计须知
  • UML画图
  • 权限校验
  • 设计模式
  • API网关
  • RPC
  • 消息队列
  • SpringCloud
  • 分布式事务
  • 云存储
  • 搜索引擎
  • 多媒体框架
  • 虚拟机
  • 开发工具篇
  • 工具库篇
  • 开发技巧篇
  • 工具类系列
  • 随笔
  • 前端环境搭建
  • HTML与CSS
  • JS学习
  • Vue3入门
  • Vue3进阶
  • 黑马Vue3
  • 脚手架搭建
  • 瑞吉外卖
  • 黑马点评
  • vue-blog
  • 沉梦接口开放平台
  • 用户中心
  • 聚合搜索平台
  • 仿12306项目
  • 壁纸小程序项目
  • RuoYi-Vue
  • 博客搭建
  • 网站收藏箱
  • 断墨寻径摘录
  • 费曼学习法
Github (opens new window)
  • 设计须知

    • 命名规范
      • Java 命名规范:
      • 包命名详解
      • 类命名详解
      • URL 命名规范
        • 【阿里】各层命名规约
      • 学习参考
    • 聊聊什么是耦合度
    • 幂等性问题分析
    • LocalDateTime和DateTime
    • 那些关于管理系统的知识
    • 唯一索引和逻辑删除冲突解决方法
    • 日志记录相关
  • UML画图

  • 权限校验

  • 设计模式

  • 系统设计
  • 设计须知
沉梦听雨
2023-06-13
目录

命名规范

# 代码命名指南

好的命名能体现出代码的特征,含义或者是用途,让阅读者可以根据名称的含义快速厘清程序的脉络。

# 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。

# 学习参考

  • 编码5分钟,命名2小时?史上最全的Java命名规范参考! (qq.com) (opens new window)
  • 阿里巴巴开发手册 (opens new window)
上次更新: 2025/3/28 17:25:55
聊聊什么是耦合度

聊聊什么是耦合度→

Theme by Vdoing | Copyright © 2023-2025 沉梦听雨 | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式