规范和指南是基于 FreeRTOS 的最佳实践和行业标准,旨在提高代码的质量和可靠性。
- 命名规范
1.1 变量和函数名应该使用小写字母和下划线,例如 my_variable
或 my_function()
。
1.2 宏定义应该使用大写字母和下划线,例如 MY_MACRO
。
1.3 结构体和枚举类型应该使用大写字母开头的驼峰命名法,例如 MyStruct
或 MyEnum
。
1.4 全局变量应该使用 g_
前缀,例如 g_my_global_variable
。
1.5 静态变量应该使用 s_
前缀,例如 static int s_my_static_variable
。
1.6 常量应该使用 k_
前缀,例如 const int k_my_constant = 42
。
2. 缩进和空格
2.1 使用 4 个空格进行缩进,而不是制表符。
2.2 在二元运算符(例如
、-
、*
、/
等)两侧留有一个空格,例如 a = b c
。
2.3 在逗号后面留有一个空格,例如 int a, b, c;
。
2.4 在函数调用的左括号前面留有一个空格,例如 my_function(a, b, c)
。
2.5 在关键字和左括号之间留有一个空格,例如 if (condition)
。
3. 注释
3.1 使用 C 风格的注释(/* ... */
)或 C 风格的注释(// ...
)。
3.2 在代码中使用注释来解释代码的意图和功能,而不是解释代码本身。
3.3 在函数头部使用注释来描述函数的输入、输出和功能。
3.4 在代码中使用注释来标记重要的代码段或待办事项。
4. 函数
4.1 函数应该尽可能短小,只完成一个明确的任务。
4.2 函数应该有明确的输入和输出,以便于理解和测试。
4.3 函数应该遵循单一职责原则,即一个函数只完成一个任务。
4.4 函数应该避免使用全局变量,而应该使用参数和返回值来传递数据。
5. 错误处理
5.1 函数应该返回错误代码或状态,以便于调用者处理错误。
5.2 错误代码应该使用枚举类型或宏定义来定义,以便于理解和维护。
5.3 函数应该使用 assert()
宏来检查输入参数和状态,以便于调试和测试。
6. 其他
6.1 使用 FreeRTOS 提供的 API 来管理任务、信号量、队列等,而不是直接操作底层硬件。
6.2 避免使用浮点数,因为它们可能会导致不可预测的行为和性能问题。
6.3 避免使用递归函数,因为它们可能会导致栈溢出和性能问题。
6.4 避免使用动态内存分配,因为它们可能会导致内存泄漏和性能问题。