当前位置: 首页 > news >正文

JAVA后端开发——类命名规范

引言

良好的命名规范是软件工程的基石。它不仅能提升代码的可读性,还能降低团队协作的沟通成本,使项目在长期迭代中更易于维护。本规范结合了业界主流实践(如阿里巴巴Java开发手册)以及现代Web应用分层架构的特点,旨在提供一套清晰、一致的命名指导。

一、 核心分层命名规范

后端应用通常采用分层架构,每一层都有其特定的职责和命名后缀。

1、Controller (控制层)

  • 后缀: Controller
  • 职责: 接收并处理前端HTTP请求,对请求参数进行基础校验,调用Service层处理业务,并最终向前端返回响应数据(通常是 AjaxResult 或 ResponseEntity)。
  • 示例: UserController, OrderController, HotProductController

2、Service (服务层)

职责: 编排和实现核心业务逻辑。它是业务功能的载体,处理复杂的业务规则、事务管理等。

接口:

  • 前缀: I (Interface)
  • 后缀: Service
  • 示例: IUserService, IOrderService, IHotProductService

实现类:

  • 后缀: ServiceImpl
  • 示例: UserServiceImpl, OrderServiceImpl, HotProductServiceImpl

3、Mapper / Repository / DAO (数据访问层)

职责: 直接与数据库进行交互,执行SQL语句,完成数据的增、删、改、查(CRUD)操作

MyBatis :

  • 后缀: Mapper
  • 示例: UserMapper, OrderMapper

JPA:

  • 后缀: Repository
  • 示例: UserRepository, OrderRepository

二、 数据对象 (Domain / POJO) 命名规范

数据对象是应用中信息流转的载体,根据其用途的不同,可以细分为多种类型。

1、Entity / DO (Domain Object - 领域对象/实体类)

  • 命名: 直接使用业务名词的驼峰式命名,无任何后缀。
  • 职责: 与数据库中的表结构一一对应,是数据的持久化模型。一个Entity实例代表了表中的一条记录。
  • 示例: User, Order, Product (若依框架中常带有Sys前缀,如 SysUser, SysRole)

2、DTO (Data Transfer Object - 数据传输对象)

      • 后缀: Dto (推荐,首字母小写),而非 DTO。这是为了遵循Java的驼峰命名法,保持风格统一。
      • 职责: 在不同服务层、模块或应用之间传递数据。它是一个纯粹的数据载体,不应包含业务逻辑。通常用于Service层返回给Controller层,或作为通用API的响应体。
      • 示例: UserDto, ProductDto, HotProductDto

      3、VO (View Object - 视图对象)

      • 后缀: Vo
      • 职责: 专门用于封装前端界面需要展示的数据。它完全根据UI的需求来定义,可能来自多个Entity或DTO的组合。
      • 说明: 在简单的项目中,DTO和VO的职责可能会合并,统一使用DTO。但在复杂的前端界面,定义专门的VO会让结构更清晰。
      • 示例: UserLoginVo, DashboardStatisticsVo

      4、Query / Param (查询参数对象)

      • 后缀: Query 或 Param
      • 职责: 用于封装来自前端的GET请求的查询条件。将多个查询参数封装成一个对象,可以使Controller的方法签名更整洁。
      • 示例: UserQuery, OrderQuery, HotProductQuery

      5、Request / Form (请求体对象)

      • 后缀: Request 或 Form
      • 职责: 用于封装POST、PUT等请求的请求体(Request Body)。
      • 示例: CreateUserRequest, UpdateProductForm, LoginForm

      6、Response (特定响应对象)

      • 后缀: Response
      • 职责: 用于封装特定接口的响应数据。当一个接口的返回结构非常独特,不适合使用通用的DTO时,应为其定义专门的Response类。这能让接口的输入输出(XxxRequest/XxxResponse)形成清晰的对应关系。
      • 示例: BatchDeleteUserResponse (返回批量删除的成功和失败详情), FileUploadResponse

      三、 其他常见类命名规范

      1、配置类:

      • 后缀: Config
      • 示例: MyBatisConfig, SecurityConfig

      2、自定义异常类:

      • 后缀: Exception
      • 示例: UserNotFoundException, PermissionDeniedException

      3、工具类:

      • 后缀: Utils 或 Util
      • 示例: StringUtils, DateUtils, JwtUtil

      4、枚举类:

      • 后缀: Enum (可选,但推荐)
      • 示例: OrderStatusEnum, UserTypeEnum

      5、过滤器/拦截器:

      • 后缀: Filter 或 Interceptor
      • 示例: JwtAuthenticationTokenFilter, RepeatableFilter

      6、监听器/处理器:

      • 后缀: Listener 或 Handler
      • 示例: OrderCreatedListener, GlobalExceptionHandler

      7、测试类:

      • 后缀: Test 或 Tests
      • 示例: UserServiceTest, UserControllerTests

        四、 总结与最佳实践

        一致性是首要原则: 在一个项目中,务必遵循同一种命名风格。

        见名知意: 类名应清晰地反映其职责,避免使用模棱两可或过于简写的词语。例如 CreateUserRequest 远胜于 CrtUsrReq。

        遵循Java驼峰命名法: 类名使用大驼峰(PascalCase),例如 HotProductController。对于缩写词,将其视为一个普通单词处理,例如 Dto、Vo、Url,而非 DTO、VO、URL。

        参考现有代码: 在加入一个新项目时,花时间阅读已有的代码,了解并遵循项目既有的命名规范。

        http://www.dtcms.com/a/273451.html

        相关文章:

      1. android 的软件盘
      2. 五镜头倾斜摄影相机的技术优势与应用原理
      3. 影石(insta360)GO3拇指相机格式化后的恢复方法
      4. 远程登录docker执行shell报错input is not a terminal问题
      5. 宝塔命令Composer 更改数据源不生效
      6. php中调用对象的方法可以使用array($object, ‘methodName‘)?
      7. BP神经网络对时序数据进行分类
      8. SpringBoot项目保证接口幂等的五种方法!
      9. Typecho性能优化全攻略:从数据库到PHP的深度调优
      10. 线性回归原理推导与应用(十):逻辑回归多分类实战
      11. 文章发布易优CMS(Eyoucms)网站技巧
      12. 1Panel V1 无缝升级到 V2 版本 实现多个 PHP 网站共享一个容器
      13. 搭建渗透测试环境
      14. 【工具变量】全国省市区县土地出让结果公告数据(2000-2024年)
      15. 【操作系统】线程
      16. RabbitMQ 之消息积压
      17. 从 Python 演进探寻 AI 与云对编程语言的推动
      18. 【C/C++ shared_ptr 和 unique_ptr可以互换吗?】
      19. 传输层协议UDP原理
      20. 秋招小白学数据结构-1-数据结构前置知识
      21. C Primer Plus 第6版 编程练习——第9章(上)
      22. Umi-OCR 的 Docker(win制作镜像,Linux(Ubuntu Server 22.04)离线部署)
      23. 微软语音合成标记语言SSML文档结构和事件(详细文档和实例)
      24. 企业级配置:Azure 邮件与 Cloudflare 域名解析的安全验证落地详解
      25. Unity Demo——3D平台跳跃游戏笔记
      26. 一个与运行 Qwen3 大语言模型的 vLLM 服务进行通信的客户端程序
      27. 利用BeautifulSoup解析大众点评区域店铺网页
      28. WHQL认证失败怎么办?企业如何高效申请
      29. 云、实时、时序数据库混合应用:医疗数据管理的革新与展望(上)
      30. https——TCP+TLS