# 服务工程规范

# 概述

工程依赖于六边型思想,整合当前的项目工程结构特点,进行的规划和划分,以下为整体工程的规划架构:

# 工程命名规范

  • 工程结构清晰,统一采用alinesno+工程性质+业务命名,中间采用"-"连接,如

    alinesno-cloud-base-notice-consumer          // 对外引用
    alinesno-cloud-base-notice-domain            // 业务领域
    alinesno-cloud-base-notice-application       // 管理应用
    alinesno-cloud-base-notice-provider          // 对外接口
    alinesno-cloud-base-notice-provider-api      // 对外SDK
    alinesno-cloud-base-notice-start             // 启动包(配置)
    
  • 统一采用英文命名,禁止使用拼音代表含义,每个英文单词不超过 10 个字母;

  • 工程命名统一采用小写字母,禁止使用大字字母;

# 工程包的命名规范

  • 工程包命名统一采用小写字母,禁止使用大字字母;

  • 工程包统一使用前缀com.alinesno.cloud

  • 工程包命名规范定义为前缀+工程性质+业务,服务名称单词连接使用"."代替"-",例如:

    com.alinesno.cloud.base.notice        // 基础日志包
    com.alinesno.cloud.business.cms     // cms业务服务包
    
  • 工程模块包命名规范定义如下,以消息服务(alinesno-base-logs)为例子:

    com.alinesno.cloud.base.notice.entity      // 持久层对象包
    com.alinesno.cloud.base.notice.repository  // 持久层包
    com.alinesno.cloud.base.notice.bean        // 实体类包
    com.alinesno.cloud.base.notice.provider    // 对外提供接口
    com.alinesno.cloud.base.notice.service     // 服务包
    com.alinesno.cloud.base.notice.emnus       // 枚举包
    com.alinesno.cloud.base.notice.constants   // 常量包
    com.alinesno.cloud.base.notice.utils       // 工具包
    com.alinesno.cloud.base.notice.exception   // 异常包
    
  • 每个服务工程下必须添加README.md文件作为工程说明.

# 实体类规范

  • 类命名统一驼峰形式,禁止使用中文拼音缩写,每个单词长度不能超过 10 个字母;

  • 类命名统一使用模块名称做为后缀,如LogsErrorEntity,则为持久层对象;

  • 类在每个包模块包命名规范定义如下,以消息服务(alinesno-base-message)为例子:

    com.alinesno.cloud.base.notice.entity.LogsErrorEntity                   // 持久层对象以`Entity`结尾
    com.alinesno.cloud.base.notice.repository.LogsErrorRepository           // 持久层操作以`Repository`结尾
    com.alinesno.cloud.base.notice.repository.impl.LogsErrorRepositoryImpl  // 持久层实现操作以`RepositoryImpl`结尾
    com.alinesno.cloud.base.notice.bean.LogsErrorBean                       // 实体类对象以`Bean`结尾
    com.alinesno.cloud.base.notice.service.LogsErrorService                 // 服务以`Service`结尾
    com.alinesno.cloud.base.notice.service.impl.LogsErrorServiceImpl        // 服务实现以`ServiceImpl`结尾
    com.alinesno.cloud.base.notice.emnus.LogsErrorEmnus                     // 枚举对象只放在Emnus对象中,工程中唯一枚举对象,以`工程名+Emnus` 命名
    com.alinesno.cloud.base.notice.constants.LogsErrorConstants             // 常量只放在一个constants对象中,工程中唯一常量对象,以`工程名+Constants`命名
    com.alinesno.cloud.base.notice.comstants.LogsConstants                  // 自定义异常类以`工程名+异常性质+Exception`命名
    com.alinesno.cloud.base.notice.utils.LogsErrorUtils                     // 工具只放在utils对象中,工程中唯一工具对象,以`工程名+Utils`命名
    com.alinesno.cloud.base.notice.exception.LogsErrorException             // 自定义异常类以`工程名+异常性质+Exception`命名
    com.alinesno.cloud.base.notice.exception.LogsException                  // 自定义全局异常类以`工程名+异常性质+Exception`命名
    
  • 枚举对象(emnus)、常量对象(constants)和工具对象(utils)包含有能用方法需做提取出来放于核心工程包中。

# 基类规范

  • 持久层对象继承基类BaseEntity,例如:

    class LogsErrorEntity extends BaseEntity{}
    
  • 持久层操作继承基类IBaseRepository,例如:

    interface LogsErrorRepository extends IBaseRepository<DemoEntitLogsErrorEntity , String>
    
  • 实体类对象继承基类BaseBean,例如 :

    class LogsErrorBean extends BaseBean{}
    
  • 业务服务类继承基类BaseService,例如:

    class LogsErrorService extends BaseService{}
    
  • 异常类继承基类BaseException,例如:

    class LogsErrorException extends BaseException{}
    
  • 每个工程的启动类统一放置于工程包下,类名统一名称LinesnoApplication:
    com.alinesno.cloud.base.logs.LinesnoApplication // 基础日志包启动类
    

# 其它