让AI帮你写代码,最重要的是什么?
那就是规范。
无规矩不成方圆,同样能力的AI大模型,有的人可以写出规范的生产级代码,而有的人只能写出勉强能跑的屎山代码,差别就在编程规范。
我写的这份规范,分别从目录结构、编码、错误处理、日志这4个维度来定义,当然大家还可以根据自己的需要补上你想关注的维度:
- directory-structure.md: 内核代码如何组织的规范
- quality-guidelines.md: 编码规范(内核风格)
- error-handling.md: 内核代码中的错误处理规范
- logging-guidelines.md: 内核代码日志、调试规范
下来我们一起来看看规范里都定义了什么?
目录规范
定义了:
- 目录职责边界
- 新增代码放置规则
- Kconfig/Makefile 组织规范
- 驱动目录组织建议(drivers)
- 跨子系统与分层约束
- UAPI 与兼容性
- 文档与测试伴随规则
- 禁止事项
编码规范
定义了:
- 基础风格
- 命名与可读性
- 函数设计约束
- 并发与上下文安全
- 内存与资源管理
- 注释与文档
- 内核 API 使用优先级
- 提交前质量门禁
- 评审关注点(Checklist)
错误处理规范
定义了:
- 返回值统一约定
- 指针错误编码(必须)
- 失败路径组织(goto 模式)
- 错误码选择原则
- probe/remove 与生命周期错误处理
- 锁与错误路径
- 日志与错误分离
- 典型反例(禁止)
日志规范
定义了:
- 日志 API 选型
- 级别使用规范
- 格式与内容规范
- 频率控制与去重
- 调试开关与动态调试
- 错误日志编写建议
- 上下文与时序注意事项
- 调试实践流程(建议)
有了这些规范,怎么来使用呢?
很简单,如果你用claude code,那么就在CLAUDE.md文件里引用这些规范文件。
如果你用的是codex,那么就在AGENTS.md文件里引用这些规范文件。
不管是在CLAUDE.md还是在AGENTS.md里,你都可以使用类似下面的方式来引用:
...<!-- 下面的文字放到你的CLAUDE.md的合适的位置 -->## linux内核代码开发规范:- 目录规范: [references/directory-structure.md](references/directory-structure.md)- 编码规范: [references/quality-guidelines.md](references/quality-guidelines.md)- 错误处理规范: [references/error-handling.md](references/error-handling.md)- 日志规范: [references/logging-guidelines.md](references/logging-guidelines.md)...
整个规范源码,我已经放到了github(或点击【阅读原文】链接):
https://github.com/simple-tec/linux-kernel-develop-spec
大家可以自由学习、修改、传播,同时也欢迎大家反馈使用情况、提issue。
期待你的反馈。