Files
contract-manager/.trae/rules/vo_rules.md
songqq c4eec0a9dd refactor(model): 重构模型类包结构并优化序列化处理
重构模型类包结构,将模型类按功能模块划分到不同的子包中。优化序列化处理,为VO类添加serialVersionUID并实现Serializable接口。移除部分冗余的serialVersionUID字段,简化模型类代码。同时修复UITools中空值处理的问题,并更新pom版本至0.0.100-SNAPSHOT。

- 将模型类按功能模块划分到ds子包中
- 为VO类添加序列化支持
- 移除冗余的serialVersionUID字段
- 修复UITools空值处理问题
- 更新项目版本号
2025-10-09 18:27:48 +08:00

2.9 KiB
Raw Permalink Blame History

VO类规则

1. 目录结构

  • VO类统一放置在 common/src/main/java/com/ecep/contract/vo/ 目录下
  • 按业务领域组织,不使用子目录

2. 命名规范

  • 类名使用驼峰命名法首字母大写以Vo结尾ContractVo.javaCompanyVo.java

3. 继承与接口实现

  • 必须实现 java.io.Serializable 接口,用于对象序列化
  • 通常实现 IdentityEntity 接口提供主键ID的getter/setter方法
  • 可能实现 NamedEntity 接口提供name属性的getter/setter方法适用于有名称的VO
  • 可能实现特定领域接口,如:
    • CompanyBasedVo提供companyId属性的getter/setter方法
    • ProjectBasedVo提供project属性的getter/setter方法
    • ContractBasedVo提供contractId属性的getter/setter方法
    • 其他类似的基于特定实体的接口

4. 注解规范

  • 通常使用Lombok的 @Data 注解自动生成getter、setter、equals、hashCode和toString方法

5. 序列化规范

  • 必须包含 private static final long serialVersionUID = 1L; 字段,用于版本控制
  • 所有字段类型必须是可序列化的

6. 字段规范

  • 字段类型:
    • 整数类型:可使用 Integer 包装类型或 int 原始类型
    • 布尔类型:可使用 Boolean 包装类型或 boolean 原始类型
    • 时间类型:使用 java.time.LocalDate(日期)或 java.time.LocalDateTime(日期时间)
    • 字符串类型:使用 String
    • 浮点数类型:使用 doubleDouble
  • 关联关系:
    • 通常只包含关联实体的ID字段companyIdprojectcontractId
    • 不包含实体对象的直接引用
  • 默认值:
    • 布尔类型字段通常有默认值(如 false
    • 其他类型根据业务需求设置默认值

7. 注释规范

  • 类注释使用JavaDoc格式描述VO类的用途/** 项目报价视图对象 */
  • 字段注释使用JavaDoc格式描述字段的含义、用途或业务规则
  • 关键字段(如外键、状态字段)应提供清晰的注释说明

8. 最佳实践

  • VO类应保持简洁只包含数据和基本的数据访问方法
  • 避免在VO类中包含复杂的业务逻辑
  • 字段命名应与对应的实体类保持一致或有明确的映射关系
  • 确保所有字段都是可序列化的
  • 对于有默认值的字段,应在声明时初始化

9. 与实体类的区别

  • 序列化VO类必须实现 Serializable 接口并包含 serialVersionUID 字段,而实体类不包含
  • 用途VO类主要用于数据传输和展示实体类主要用于持久化
  • 关联关系VO类通常只包含关联实体的ID实体类包含实体对象的引用
  • 注解VO类主要使用Lombok注解实体类使用JPA注解和Lombok注解
  • 方法VO类通常只有getter/setter方法实体类可能包含更多业务相关方法