当前位置: 首页 > java >正文

54、【OS】【Nuttx】编码规范解读(二)

背景

接上篇 blog
53、【OS】【Nuttx】编码规范解读(一)
下面接续来分析 Nuttx 的编码规范

Nuttx 编码规范

在这里插入图片描述

行结尾

  • 使用 Unix 风格的换行符(\n),而不是 Windows 风格的回车换行序列(\r\n)
  • 确保每一行的末尾没有多余的空白字符
  • 文件末尾要有个单一的换行符(\n)

行宽

  • 每行不超过 78 字符

在这里插入图片描述

空行

  • 单空行:可以在逻辑分组之间使用单个空行,以提高代码的可读性,具体由设计者决定
  • 不允许使用两个或更多的连续空行,以保持代码紧凑,易于阅读,避免不必要的空白

列对齐

相似的元素应对齐到同一列,除非会导致行宽超过 78 字符,以增强代码的可读性,比如
在这里插入图片描述

注释

注释和代码一样重要,它们共同作用于提高软件项目的可读性、可维护性和可持续发展能力

  • 提高可读性:好的注释能够清晰地解释代码的意图和设计思路,而不仅仅是描述“做了什么”,对于理解复杂的逻辑非常重要
  • 增强可维护性:当需要对代码进行修改或扩展时,注释可以提供上下文信息,帮助开发人员准确理解哪些部分可能受到影响,以做出正确的调整
  • 支持团队协作:团队在运作时,不同成员大概率负责不同模块。良好的注释有助于团队成员间更好地理解与协作,即使不是自己写的代码也可以轻松理解

下面对 Nuttx 注释要求进行解读
在这里插入图片描述

注释中的文本必须符合标准的美式英语语法和拼写规则:

  • 句子以大写字母开头,以句号(.)、问号(?)或感叹号(!)结尾
  • 句子片段和短语要视为完整的句子处理
  • 句号和冒号后面跟两个空格,比如 This is a sentence. This is another sentence: And so on.
  • 逗号和分号后面跟一个空格,比如 This is a clause, and this is another clause; both are part of the same sentence.
  • 句号或冒号之后的字符以大写字母开头,逗号或分号之后的字符以小写字母开头

行间距

在这里插入图片描述

每个注释前后都应该有一个空行,以提高代码的可读性,例外情况如下:

文件头注释

文件头注释前不需要有空行

条件编译

  • 条件编译前应该有一个空行
  • 紧跟条件编译后的注释不应有空行

大括号

左右大括号前后的注释也不需要空行

举例如下
在这里插入图片描述

缩进

注释在要解释的代码之前,缩进与代码保持一致

单行注释

简短的注释必须位于单行上,且注释定界符(/* … */ 或 //)也必须在同一行,比如
在这里插入图片描述

多行注释

在这里插入图片描述

  • 如果注释内容太长,无法放在单行内,则需要将其拆分为多行注释
  • 多行注释必须从第一行开始,并且以注释起始定界符 (/*) 开头
  • 多行注释的后续每行都应以一个星号 (*) 开头,并且这些星号应该与前一行中的星号对齐在同一列
  • 注释的结束定界符 (/) 应该单独占一行,且其前面的星号 () 也需要与前一行中的星号对齐在同一列

举例如下
在这里插入图片描述

右侧注释

在这里插入图片描述
在源文件中的语句右侧添加注释不被鼓励,如果必须使用,则应遵循以下两条规则

  • 注释要简短,确保不会超过规定的 78 个字符行宽
  • 注释要对齐,应当在每一行上从同一列开始,以保持代码整洁和可读性

举例如下
在这里插入图片描述

数据定义的右侧注释

在这里插入图片描述
结构体,枚举等类型声明时,右侧注释例外,是被鼓励的,但要注意不要超过行宽规定 78 字符的限制,并且做好列对齐,举例如下
在这里插入图片描述

http://www.xdnf.cn/news/3731.html

相关文章:

  • 130. 被围绕的区域
  • (1)大模型的提示词工程实践技巧---LLM输出配置详解
  • 数字孪生赋能智慧城市:从概念到落地的深度实践
  • 【文献阅读】中国湿地随着保护和修复的反弹
  • DeepSeek眼中的文明印记:金刚经
  • 004 树与二叉树:从原理到实战
  • Baklib赋能企业知识管理数字化转型
  • MCP 协议知识分享指南
  • VS调试技巧
  • 网站即时备份,网站即时备份的方法有哪些
  • 简介QML中的Canvas
  • 机器学习入门-线性回归模型/损失函数/梯度下降
  • 【WZOI】【题解】【质数密度】质数密度题解报告
  • 旋转矩阵公式理解
  • 【云备份】服务端数据管理模块设计与实现
  • 嵌入式 GCC 编译工具链:32 位与 64 位助力高效开发
  • [UVM]UVM中reg_map的作用及多个rem_map的使用案例
  • 【C++篇】类和对象(上)
  • 饱和蒸汽再生数据采集挥发性有机物(VOCs)吸附脱附实验装置
  • Pillow 玩图术:轻松获取图片尺寸和颜色模式
  • 肥胖风险的多类预测——CatBoost模型的89%
  • 《MATLAB实战训练营:从入门到工业级应用》趣味入门篇-用声音合成玩音乐:MATLAB电子琴制作(超级趣味实践版)
  • 用可视化学习逆置法
  • 【Linux】Linux应用开发小经验
  • 信息安全导论 第七章 网络边界防御技术
  • 前端面经-VUE3篇(二)--vue3组件知识(二)依赖注入、异步组件、生命周期、组合式函数、插件
  • piccolo-large-zh-v2 和 bge-m3哪个效果好?
  • 【Mytais系列】SqlSession
  • 经典算法 求解硬币组成问题
  • 【Mytais系列】Select语句执行流程