KCloud-Platform-IoT KCloud-Platform-IoT
首页
  • 活动

    • KCloud-Platform-IoT 开源三周年快乐&父亲节快乐
  • 指南

    • 后端项目启动
    • 前端项目启动
    • Docker安装
    • Linux常用命令
    • Docker常用命令
    • JVM性能优化
    • 项目配置
    • COLA代码规范
    • OAuth2.1 授权服务器配置
    • OAuth2.1 资源服务器配置
    • OAuth2.1 认证API配置
    • Nacos配置
    • 网关路由配置
赞助
GitHub (opens new window)
首页
  • 活动

    • KCloud-Platform-IoT 开源三周年快乐&父亲节快乐
  • 指南

    • 后端项目启动
    • 前端项目启动
    • Docker安装
    • Linux常用命令
    • Docker常用命令
    • JVM性能优化
    • 项目配置
    • COLA代码规范
    • OAuth2.1 授权服务器配置
    • OAuth2.1 资源服务器配置
    • OAuth2.1 认证API配置
    • Nacos配置
    • 网关路由配置
赞助
GitHub (opens new window)
  • 活动

    • KCloud-Platform-IoT 开源三周年快乐&父亲节快乐
  • 指南

    • 后端项目启动
    • 前端项目启动
    • Docker安装
    • Linux常用命令
    • Docker常用命令
    • JVM性能优化
    • 项目配置
    • COLA代码规范
      • OAuth2.1 授权服务器配置
      • OAuth2.1 资源服务器配置
      • OAuth2.1 认证API配置
      • Nacos配置
      • 网关路由配置
    • 二开指南
    • 指南
    KCloud-Platform-IoT
    2026-02-09
    目录

    COLA代码规范

    你好呀,我的老朋友!我是老寇,欢迎来到老寇IoT云平台!

    我用空闲时间看完了《代码精进之路从码农到工匠》和《程序员的底层思维》这两本书,作者张建飞老师,开篇强调写好代码并不是一件容易的事,需要持续地学习和实践。本人也赞同,因此,本人对重点内容做了笔记,希望对你有所帮助。

    # 命名

    “在计算机科学中有两件难事:缓存和命名”,因此,作为开发者,有时候为了想出一个好的名字,不惜花上几个小时,甚至绞尽脑汁。 为什么要这样做?因为一个好的命名可以方便阅读代码和梳理业务

    命名需要显性化表达开发者的意图,拒绝无意义命名

    变量命名需要能够准确描述业务

    反例

    // 过去的天数
    int d;
    
    // 页数
    final int size = 10;
    

    正确做法

    // 过去的天数
    int elapsedTimeInDays;
    
    // 页数
    final int PAGE_SIZE = 10;
    

    函数命名要具体,拒绝无意义命名 例如, processData() 就不是一个好命名,相比之下, validateUserCredentials() 或 eliminateDuplicateRequests() 好很多

    函数命名要体现做什么,而不是怎么做 例如,雇员信息存储在一个栈中,需要获取最近的一个雇员信息。 getLatestEmployee() 比 popRecord() 好,无需了解底层细节,业务更加具体

    # 🚀 包命名
    层次 包名 功能 必选
    Adapter层 web 处理页面请求Controller 否
    Adapter层 wireless 处理无线端适配 否
    Adapter层 wap 处理wap端的适配 否
    Adapter层 consumer 处理外部message 否
    Adapter层 scheduler 处理定时任务 否
    App层 executor 处理request,包括command和query 是
    Domain层 model 领域模型 否
    Domain层 ability 领域能力,包括DomainService 否
    Domain层 gateway 领域网关,解耦利器 是
    Infra层 gatewayimpl 网关实现 是
    Infra层 mapper ibatis数据库映射 否
    Infra层 config 配置信息 否
    Client SDK api 服务对外透出的API 是
    Client SDK dto 服务对外的DTO 是
    # 🚀 类命名
    规范 用途 解释
    xxxCmd Client Request Cmd代表Command,表示新增/修改/删除相关的请求
    xxxQry Client Request Qry代表Query,表示查询相关的请求
    xxxCO Client Object 用于传递数据,等同于DTO
    xxxServiceI Api Service Api接口
    xxxCmdExe Command Executor 命令模式,一个新增/修改/删除相关的请求对应一个执行器
    xxxQryExe Query Executor 命令模式,一个查询相关的请求对应一个执行器
    xxxInterceptor Command Interceptor 拦截器,用于处理切面逻辑
    xxxExtPt Extension Point 扩展点
    xxxExt Extension 扩展实现
    xxxValidator Validator 校验器,用于校验的类
    xxxConvertor Convertor 转换器,实现不同层级对象互转
    xxxAssembler Assembler 组装器,组装外部服务调用参数
    xxxA AggregateRoot 聚合根,聚合实体和值对象
    xxxE Entity 领域实体
    xxxV Value Object 值对象
    xxxMapper Mapper 数据库映射
    xxxDomainService Domain Service 领域服务
    xxxDO Data Object 数据对象,持久化
    xxxGateway Gateway 领域网关,防腐层
    xxxConstants Constant 常量
    xxxConfig Configuration 配置
    xxxUtils Utility 工具
    xxxEvent Event 事件
    xxxEventHandler Event Handler 处理事件
    xxxFactory Domain Factory 领域工厂
    xxxController Controller 处理页面请求
    xxx Enum 枚举
    xxxFilter Filter 过滤器
    # 🚀 方法命名

    方法命名(应用层+接口层)

    操作 方法名约定 举例
    新增 save saveUser
    删除 remove removeUser
    修改 modify modifyUser
    查看 get getUserById
    列表 list listUser listTreeMenu
    分页 page pageUser
    统计 count countUser
    导入 import importUser
    导出 export exportUser

    方法命名(领域层)

    操作 方法名约定 举例
    添加 add addEvent

    注意:尽量避免CRUD形式的命名,要体现业务语义

    方法命名(基础设施层)

    操作 方法名约定 举例
    新增 create createUser
    删除 delete deleteUser
    修改 update updateUser
    查看 get getUserById
    列表 list listUser
    分页 page pageUser
    统计 count countUser

    方法命名(Mapper)

    操作 方法名约定 举例
    新增 insert insertUser
    删除 delete deleteUser
    修改 update updateUser
    查看 select selectUserById selectUserId
    列表 list selectUserList
    分页 page selectUserPage
    统计 count selectUserCount
    # 🚀 错误码命名(显性)
    类型 错误码约定 举例
    参数异常 P_XX_XX P_OAuth2_UsernameIsNull:账号不能为空
    系统异常 S_XX_XX S_DS_TableNotExist:表不存在
    业务异常 B_XX_XX B_User_UsernameAlreadyExist:用户名已存在

    我是老寇,我们下次再见啦!

    上次更新: 2/9/2026, 2:54:22 PM
    项目配置
    OAuth2.1 授权服务器配置

    ← 项目配置 OAuth2.1 授权服务器配置→

    Theme by Vdoing | Copyright © 2022-2026 laokou | Apache 2.0 License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式