KCloud-Platform-IoT KCloud-Platform-IoT
首页
  • 开发手册

    • 组件【ai】
    • 组件【algorithm】
    • 组件【banner】
    • 组件【clickhouse】
    • 组件【core】
    • 组件【bom】
    • 组件【cors】
    • 组件【domain】
    • 组件【crypto】
    • 组件【data-cache】
    • 组件【dubbo】
    • 组件【elasticsearch】
    • 组件【excel】
    • 组件【extension】
    • 组件【flink】
    • 组件【grpc】
    • 组件【i18n】
    • 组件【idempotent】
    • 组件【influxdb】
    • 组件【kafka】
    • 组件【log】
    • 组件【lock】
    • 组件【mail】
    • 组件【log4j2】
    • 组件【mqtt】
    • 组件【mongodb】
    • 组件【mybatis-plus】
    • 组件【nacos】
    • 组件【netty】
    • 组件【openapi-doc】
    • 组件【openfeign】
    • 组件【oss】
    • 组件【prometheus】
    • 组件【rabbitmq】
    • 组件【rate-limiter】
    • 组件【reactor】
    • 组件【redis】
    • 组件【rocketmq】
    • 组件【ruleengine】
    • 组件【secret】
    • 组件【security】
    • 组件【sensitive】
    • 组件【sentinel】
    • 组件【sms】
    • 组件【snail-job】
    • 组件【spark】
    • 组件【starrocks】
    • 组件【statemachine】
    • 组件【storage】
    • 组件【tdengine】
    • 组件【tenant】
    • 组件【test】
    • 组件【trace】
    • 组件【xss】
    • 组件【shardingsphere】
  • 环境搭建

    • Centos7安装Mysql 8.0.33
    • Centos7安装Redis 7.0.11
    • Centos7安装RocketMQ 5.1.1
    • Centos7安装Jdk 17.0.7
    • Centos7安装Docker 23.0.6
    • Centos7安装Elasticsearch 8.6.2
    • Docker安装RabbitMQ 3.12.2
    • Docker安装Postgresql 16.1
    • Ubuntu20.04安装Docker
    • Ubuntu20.04忘记密码或指纹错误
  • 常用命令

    • Centos7常用命令
    • Centos7常用命令
  • 快速上手

    • 项目启动【dev环境】
    • 项目启动【test环境】
    • 项目启动【prod环境】
    • 更新日志
  • 前端指南

    • 前端启动
  • 后端指南

    • COLA代码规范
    • SSL证书
    • 一键修改项目模块
    • 一键生成项目骨架
    • 一键修改项目版本号
    • 一键跳过测试用例
    • 一键生成后端COLA代码
    • 分布式链路跟踪之ELK日志
    • 一键检查代码规范
    • 动态路由
  • 项目部署

    • 项目部署之镜像打包与推送
  • 其他

    • Java如何快速转Go
    • Go快速开发API
    • Vue快速开发Api
    • React快速开发Api
  • 文章

    • 物联网之对接MQTT最佳实践
    • 物联网之使用Vertx实现MQTT-Server最佳实践【响应式】
    • vue3+lime-echart各种图表使用【懒人专用,建议收藏】
    • 物联网之使用Vertx实现TCP最佳实践【响应式】
    • 物联网之使用Vertx实现HTTPWebSocket最佳实践【响应式】
    • 物联网之使用Vertx实现UDP最佳实践【响应式】
  • 儒学

    • 儒学摘抄(一)
  • 禅语

    • 禅语摘抄(一)
  • 诗词

    • 诗词摘抄(一)
  • 道法

    • 道法摘抄(一)
  • 养生

    • 养生摘抄(一)
  • 读后感

    • 读《强者,都是含泪奔跑的人》读后感
  • 修行

    • 修身/养生/情感
  • 觉悟

    • 觉悟日记(一)
赞助
项目课程 (opens new window)
GitHub (opens new window)
首页
  • 开发手册

    • 组件【ai】
    • 组件【algorithm】
    • 组件【banner】
    • 组件【clickhouse】
    • 组件【core】
    • 组件【bom】
    • 组件【cors】
    • 组件【domain】
    • 组件【crypto】
    • 组件【data-cache】
    • 组件【dubbo】
    • 组件【elasticsearch】
    • 组件【excel】
    • 组件【extension】
    • 组件【flink】
    • 组件【grpc】
    • 组件【i18n】
    • 组件【idempotent】
    • 组件【influxdb】
    • 组件【kafka】
    • 组件【log】
    • 组件【lock】
    • 组件【mail】
    • 组件【log4j2】
    • 组件【mqtt】
    • 组件【mongodb】
    • 组件【mybatis-plus】
    • 组件【nacos】
    • 组件【netty】
    • 组件【openapi-doc】
    • 组件【openfeign】
    • 组件【oss】
    • 组件【prometheus】
    • 组件【rabbitmq】
    • 组件【rate-limiter】
    • 组件【reactor】
    • 组件【redis】
    • 组件【rocketmq】
    • 组件【ruleengine】
    • 组件【secret】
    • 组件【security】
    • 组件【sensitive】
    • 组件【sentinel】
    • 组件【sms】
    • 组件【snail-job】
    • 组件【spark】
    • 组件【starrocks】
    • 组件【statemachine】
    • 组件【storage】
    • 组件【tdengine】
    • 组件【tenant】
    • 组件【test】
    • 组件【trace】
    • 组件【xss】
    • 组件【shardingsphere】
  • 环境搭建

    • Centos7安装Mysql 8.0.33
    • Centos7安装Redis 7.0.11
    • Centos7安装RocketMQ 5.1.1
    • Centos7安装Jdk 17.0.7
    • Centos7安装Docker 23.0.6
    • Centos7安装Elasticsearch 8.6.2
    • Docker安装RabbitMQ 3.12.2
    • Docker安装Postgresql 16.1
    • Ubuntu20.04安装Docker
    • Ubuntu20.04忘记密码或指纹错误
  • 常用命令

    • Centos7常用命令
    • Centos7常用命令
  • 快速上手

    • 项目启动【dev环境】
    • 项目启动【test环境】
    • 项目启动【prod环境】
    • 更新日志
  • 前端指南

    • 前端启动
  • 后端指南

    • COLA代码规范
    • SSL证书
    • 一键修改项目模块
    • 一键生成项目骨架
    • 一键修改项目版本号
    • 一键跳过测试用例
    • 一键生成后端COLA代码
    • 分布式链路跟踪之ELK日志
    • 一键检查代码规范
    • 动态路由
  • 项目部署

    • 项目部署之镜像打包与推送
  • 其他

    • Java如何快速转Go
    • Go快速开发API
    • Vue快速开发Api
    • React快速开发Api
  • 文章

    • 物联网之对接MQTT最佳实践
    • 物联网之使用Vertx实现MQTT-Server最佳实践【响应式】
    • vue3+lime-echart各种图表使用【懒人专用,建议收藏】
    • 物联网之使用Vertx实现TCP最佳实践【响应式】
    • 物联网之使用Vertx实现HTTPWebSocket最佳实践【响应式】
    • 物联网之使用Vertx实现UDP最佳实践【响应式】
  • 儒学

    • 儒学摘抄(一)
  • 禅语

    • 禅语摘抄(一)
  • 诗词

    • 诗词摘抄(一)
  • 道法

    • 道法摘抄(一)
  • 养生

    • 养生摘抄(一)
  • 读后感

    • 读《强者,都是含泪奔跑的人》读后感
  • 修行

    • 修身/养生/情感
  • 觉悟

    • 觉悟日记(一)
赞助
项目课程 (opens new window)
GitHub (opens new window)
  • 开发手册

    • 组件【ai】
    • 组件【algorithm】
    • 组件【banner】
    • 组件【clickhouse】
    • 组件【core】
    • 组件【bom】
    • 组件【cors】
    • 组件【domain】
    • 组件【crypto】
    • 组件【data-cache】
    • 组件【dubbo】
    • 组件【elasticsearch】
    • 组件【excel】
    • 组件【extension】
    • 组件【flink】
    • 组件【grpc】
    • 组件【i18n】
    • 组件【idempotent】
    • 组件【influxdb】
    • 组件【kafka】
    • 组件【log】
    • 组件【lock】
    • 组件【mail】
    • 组件【log4j2】
    • 组件【mqtt】
    • 组件【mongodb】
    • 组件【mybatis-plus】
    • 组件【nacos】
    • 组件【netty】
    • 组件【openapi-doc】
    • 组件【openfeign】
    • 组件【oss】
    • 组件【prometheus】
    • 组件【rabbitmq】
    • 组件【rate-limiter】
    • 组件【reactor】
    • 组件【redis】
    • 组件【rocketmq】
    • 组件【ruleengine】
    • 组件【secret】
    • 组件【security】
    • 组件【sensitive】
    • 组件【sentinel】
    • 组件【sms】
    • 组件【snail-job】
    • 组件【spark】
    • 组件【starrocks】
    • 组件【statemachine】
    • 组件【storage】
    • 组件【tdengine】
    • 组件【tenant】
    • 组件【test】
    • 组件【trace】
    • 组件【xss】
    • 组件【shardingsphere】
  • 环境搭建

    • Centos7安装Mysql 8.0.33
    • Centos7安装Redis 7.0.11
    • Centos7安装RocketMQ 5.1.1
    • Centos7安装Jdk 17.0.7
    • Centos7安装Docker 23.0.6
    • Docker安装RabbitMQ 3.12.2
    • Centos7安装Elasticsearch 8.6.2
    • Docker安装Postgresql 16.1
    • Ubuntu20.04安装Docker
    • Ubuntu20.04忘记密码或指纹错误
  • 常用命令

    • Centos7常用命令
    • Docker常用命令
  • 快速上手

    • 项目启动【dev环境】
    • 项目启动【test环境】
    • 项目启动【prod环境】
    • 更新日志
  • 前端指南

    • 前端启动
  • 后端指南

    • COLA代码规范
      • 1.包命名
      • 2.类命名
      • 3.方法命名
        • 方法命名(应用层+接口层)
        • 方法命名(领域层)
        • 方法命名(基础设施层)
        • 方法命名(Mapper)
      • 4.错误码命名(显性)
    • SSL证书
    • 一键修改项目模块
    • 一键生成项目骨架
    • 一键修改项目版本号
    • 一键跳过测试用例
    • 一键生成后端COLA代码
    • 分布式链路跟踪之ELK日志
    • 一键检查代码规范
    • 动态路由
    • OAuth2.1流程
  • 项目部署

    • 项目部署之镜像打包与推送
  • 其他

    • Java如何快速转Go
    • Go快速开发API
    • Vue快速开发Api
    • React快速开发Api
  • 文章

    • 物联网之对接MQTT最佳实践
    • 物联网之使用Vertx实现MQTT-Server最佳实践【响应式】
    • vue3+lime-echart各种图表使用【懒人专用,建议收藏】
    • 物联网之使用Vertx实现TCP最佳实践【响应式】
    • 物联网之使用Vertx实现HTTPWebSocket最佳实践【响应式】
    • 物联网之使用Vertx实现UDP最佳实践【响应式】
  • 指南
  • 后端指南
KCloud-Platform-IoT
2024-03-21
目录

COLA代码规范

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

话不多说,跟我一起学习COLA,以下内容来源于书本及个人理解,请认真阅读!!!

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

# 一、命名

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

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

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

反例

// 过去的天数
int d;

// 页数
final int size = 10;

正确做法

// 过去的天数
int elapsedTimeInDays;

// 页数
final int PAGE_SIZE = 10;

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

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

# 1.包命名

层次 包名 功能 必选
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 是

# 2.类命名

规范 用途 解释
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 处理页面请求
xxxEnum Enum 枚举
xxxFilter Filter 过滤器

# 3.方法命名

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

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

# 方法命名(领域层)

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

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

# 方法命名(基础设施层)

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

# 方法命名(Mapper)

操作 方法名约定 举例
新增 insert insertUser
删除 delete deleteUser
修改 update updateUser
查看 select selectById
列表 list selectList
分页 page selectPage
统计 count selectCount

# 4.错误码命名(显性)

类型 错误码约定 举例
参数异常 P_XX_XX P_OAuth2_UsernameIsNull:账号不能为空
系统异常 S_XX_XX S_DS_TableNotExist:表不存在
业务异常 B_XX_XX B_User_UsernameAlreadyExist:用户名已存在
上次更新: 5/21/2025, 5:17:33 PM
前端启动
SSL证书

← 前端启动 SSL证书→

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