AI coding 代码开发规范

1. 文档目的

本文总结一套适用于中小型业务系统与工具型项目的代码开发规范。内容结合常见项目演进中容易出现的实际情况提炼而来,但刻意抽象为通用原则,不依赖任何特定业务背景、技术品牌或目录结构。

目标不是追求"形式上的规范",而是降低以下成本:

  • 新成员理解成本
  • 需求变更带来的修改成本
  • 排查问题时的定位成本
  • 交接、复盘、扩展时的沟通成本

2. 总体原则

2.1 单一职责优先

一个模块只解决一类问题。

常见划分方式:

  • 接入层:处理外部输入输出、接口调用、协议适配
  • 业务层:处理核心业务规则和流程编排
  • 基础设施层:日志、配置、存储、工具函数、第三方封装
  • 启动层:脚本入口、命令行、服务启动逻辑

如果一个文件同时承担"启动、业务、配置、异常处理、日志拼装"多项职责,通常说明需要拆分。

2.2 先保证边界,再追求复用

复用建立在清晰边界之上。没有边界的"通用封装"往往会快速失控。

推荐顺序:

  1. 先把模块职责划清
  2. 再抽公共接口
  3. 最后再沉淀复用能力

2.3 让目录表达设计,而不是堆放文件

目录结构应该让人一眼看出:

  • 哪些是核心代码
  • 哪些是入口脚本
  • 哪些是测试
  • 哪些是设计文档
  • 哪些是临时示例或验证代码

如果"示例、测试、工具、正式代码"长期混放,后续维护很容易失焦。


3. 代码组织规范

3.1 核心库与启动脚本分离

推荐把可复用能力放在独立包或模块中,把"运行方式"放在轻量入口里。

良好实践:

  • 核心逻辑可以被 import 调用
  • 启动脚本只负责参数读取、依赖组装、启动流程
  • 不在入口脚本中堆积大量业务实现

这样做的价值:

  • 更容易测试
  • 更容易复用
  • 更容易替换运行方式

3.2 避免超大文件

一个文件过大通常意味着职责过多。建议按照"配置、协议、服务、异常、工具、模型"拆分。

经验建议:

  • 文件超过数百行时,主动检查是否可以按职责切分
  • 类过长时,优先拆出协作对象,而不是继续追加方法

3.3 工具函数必须受控

utils 往往最容易变成"杂物间"。

规范要求:

  • 工具函数只能放通用、稳定、无业务语义的能力
  • 一旦函数带明显业务语义,就应进入对应领域模块
  • utils 目录要按主题继续拆分,不要无限累积

4. 配置管理规范

4.1 配置必须显式建模

配置不要散落在脚本常量、环境变量读取、JSON/YAML 字典访问中。

推荐做法:

  • 用明确的数据结构承载配置
  • 在启动阶段统一加载和校验
  • 对外暴露默认值、必填项、取值范围

4.2 环境变量只作为输入,不作为业务逻辑来源

环境变量适合承载部署差异,不适合在业务代码中被随意读取。

推荐做法:

  • 统一从配置层读取环境变量
  • 业务层只接收已经校验完成的配置对象
  • 敏感信息不写入日志、不硬编码、不提交到仓库

4.3 配置校验前置

系统应在启动早期失败,而不是在运行中随机失败。

至少校验:

  • 必填字段
  • 枚举值范围
  • 数值上下限
  • 外部依赖前置条件

5. 异常与日志规范

5.1 异常要分层,不要一把抓

建议建立清晰的异常层次:

  • 参数异常
  • 配置异常
  • 外部依赖异常
  • 业务规则异常
  • 系统运行异常

不建议到处直接抛出模糊的通用异常文本。

5.2 日志服务于排查,而不是制造噪音

日志应该回答三个问题:

  • 发生了什么
  • 为什么发生
  • 影响了什么

推荐要求:

  • 关键流程打信息日志
  • 高频成功路径避免刷屏
  • 异常日志带上下文信息
  • 敏感字段统一脱敏

5.3 失败信息要可定位

错误日志中至少应保留:

  • 当前操作
  • 关键参数标识
  • 外部调用结果或状态
  • 重试次数或恢复动作

6. 测试规范

6.1 测试目录必须统一口径

测试结构混乱会直接拉高维护成本。

建议固定一种组织方式,并长期坚持:

  • 单元测试:围绕模块与函数
  • 集成测试:围绕模块协作与外部依赖
  • 示例代码:独立于正式测试目录

不要让"示例、脚本、手工验证、自动化测试"边界模糊。

6.2 先测核心规则,再测外部联动

优先级建议:

  1. 配置解析与校验
  2. 核心业务规则
  3. 异常分支与边界条件
  4. 与外部系统的集成流程

6.3 测试要能表达意图

测试名称要让人看懂场景、输入和预期结果。

好的测试通常能回答:

  • 前置条件是什么
  • 执行动作是什么
  • 期望结果是什么

7. 文档规范

7.1 README 只做入口,不做百科全书

README 推荐包含:

  • 项目简介
  • 快速启动
  • 主要能力
  • 文档导航
  • 最低环境要求

细节说明应下沉到专题文档。

7.2 文档链接必须可验证

常见问题不是"没写文档",而是"文档索引失真"。

建议定期检查:

  • 链接是否存在
  • 目录名称是否一致
  • 文档是否仍与代码实现匹配

7.3 文档结构与代码结构对应

推荐至少区分:

  • 用户文档
  • 技术文档
  • 开发文档
  • 外部协议或依赖说明

这样更利于读者按角色获取信息。


8. 命名与风格规范

8.1 命名优先表达语义

命名标准:

  • 变量名表达含义,不追求缩写炫技
  • 类名体现对象职责
  • 函数名体现动作和结果
  • 文件名与模块职责一致

8.2 注释解释"为什么",少解释"是什么"

以下情况值得写注释:

  • 设计取舍
  • 兼容性约束
  • 时序要求
  • 容易误用的边界条件

不建议用注释重复代码字面意思。

8.3 风格统一优先于个人偏好

团队规范应覆盖:

  • 格式化工具
  • import 顺序
  • 类型标注要求
  • 日志与异常写法
  • 测试命名方式

一旦选定,就自动化执行,不靠人工争论。


9. 常见工程化问题与改进建议

以下问题在很多项目中都会出现:

9.1 入口脚本过重

表现:

  • 启动文件同时承担大量业务逻辑
  • 难以复用和测试

建议:

  • 把流程编排和底层能力拆开
  • 入口只保留组装与启动

9.2 文档与实现逐渐脱节

表现:

  • 目录说明和真实结构不一致
  • 文档引用失效

建议:

  • 文档纳入评审范围
  • 每次结构调整同步更新导航文档

9.3 测试口径不统一

表现:

  • 自动化测试、样例代码、手工验证脚本混杂

建议:

  • 建立统一分类
  • 明确哪些进入 CI,哪些只做示例

9.4 配置分散

表现:

  • 默认值、环境变量、配置文件、命令行参数散布在多个位置

建议:

  • 收敛到统一配置入口
  • 统一校验、统一说明、统一默认值策略

10. 建议落地顺序

如果一个项目已经在运行,不建议一次性"大重构",更合理的顺序是:

  1. 统一目录和命名规则
  2. 收敛配置入口和校验逻辑
  3. 拆分过重模块
  4. 清理测试分类
  5. 修正文档索引和开发说明
  6. 接入格式化、静态检查、测试自动化

这个顺序的核心思路是:先让工程边界稳定,再提高质量门槛。


11. 结论

开发规范的价值不在于"写得漂亮",而在于让系统可以持续演进。

一套有效的规范,应该同时满足三点:

  • 新人能快速理解
  • 老代码能逐步收敛
  • 团队能通过工具自动执行

真正好的规范,不依赖某个负责人反复提醒,而是能自然体现在目录、代码、测试、文档和提交流程中。

相关推荐
用户9718356334664 小时前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪6 小时前
linux 拷贝文件或目录到指定的位置
linux
大树881 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠1 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质1 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
bush41 天前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5201 天前
Linux 11 动态监控指令top
linux
小宇宙Zz1 天前
Maven依赖冲突
java·服务器·maven
Inhand陈工1 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智1 天前
ARP代理--工作原理
运维·网络·arp·arp代理