Skip to content

Coding Style

Z User edited this page Oct 23, 2026 · 2 revisions

语言:简体中文 | Coding-Style-EN

代码风格

代码树风格自洽;遵循现有风格。

C

  • C11 (-std=gnu11),4 空格缩进,K&R 大括号风格,.c/.h 文件中不使用制表符。
  • 类型:使用内核的固定宽度类型集(u8/u16/u32/u64/s8/...,来自 types.h)- 不使用 uint8_t 这样的拼写。
  • 当类型重要时,每行只声明一个变量;尽可能地进行初始化。
  • 每个文件开头都必须包含 SPDX 版权注释块和一个 Purpose 段落,说明该文件存在的原因。未来的读者(和文档生成器)依赖于此。
  • 函数注释:约定、参数、返回码 - 特别是每个负数返回值。
  • 错误处理:检查、用清晰的报告消息报告、然后回滚 - 绝不能泄露半初始化的设备注册。

汇编

  • .S 文件(预处理):boot.S 和架构跳板是参考标准。在每个入口点注释 ABI。

Shell 命令

  • 使用 shell_register_command_ex 和工作包标签进行注册,以确保 help -w 的准确性。
  • 单行帮助信息,参数错误时打印 usage:,失败时以非零退出码退出。
  • 仅使用 ASCII 字符。

命名

  • 文件:kernel/<area>/core_<thing>.c,drivers/<bus>/driver_<hw>.c,shell/shell_cmds_<domain>.c,fs/fs_<fs>.c - 代码树的布局就是分类标准(文档生成器按此分组)。
  • 符号:<module>_<verb>_<object>(例如 driver_block_flush,klog_write,ota_ab_install)。静态辅助函数保持文件局部性。
  • 全大写常量带模块前缀(OC_MB2_TAG_END,SHELL_MAX_COMMANDS)。

限制是设计的一部分

当你添加一个有界表时,限制常量必须附带注释解释该数值(参见 shell.h 中的 SHELL_MAX_COMMANDS - 232->256 的历史记录在定义处有文档)。保持这种纪律:下一个需要调整它的人需要了解背景。

禁止事项

  • 没有"留作后用"的死代码 - 删除它;git 会记住。
  • 没有无声截断 - 拒绝并给出消息(别名的值是典范:完整存储或拒绝)。
  • 没有 // TODO 而不带 BUG- 编号或工作包引用。
  • 没有新的第三方代码:代码树是原创的,Apache 2.0 许可,且保持不变。

Clone this wiki locally