/************************************************* 1. 头文件说明 File name : app_main.c Module : Author : amir Version : 0.1 Created on : 2022-02-11 Description : 代码语法规范 Modify History: 1. Date: Author: Modification: *************************************************/ #include #include "hlog.h" /*[0]超过512字节的内存考虑要用堆内存, 特别是1K及以上禁止用栈内存*/ /*2. 注释标准:头文件宏标准*/ #ifndef __MAIN_H__ /* 3. 双下线__ */ #define __MAIN_H__ #endif #define MAX(a, b) ((a) > (b) ? (a) : (b)) /* 4. 变量用括号() */ /* 注释用 *号进行,避免用 // */ #define MIN(a, b) ({int32_t ret; ret = (a) > (b) ? (b) : (a); ret+2;}) /* 5. 定义变量得到其值,GNU支持({}), 其它代替do{}while(0) */ #define MAX_PATH (256) /* 6. 宏用大写*/ typedef enum { STD_OK, STD_NG, }std_e; /* 7. 结构体 _e */ typedef struct { uint8_t num; /* 8. num of pipeline -- 变量简明注释,特别是重要的变量 */ std_e e_std; }std_s; /* 9. 结构体 _s */ static int32_t s_num; /* 10. 静态变量用 s_xxx */ static int32_t g_num; /* 11. 全局变量用 g_xxx, 尽量少用公共变量 ,全局变量减少耦合 */ static int32_t k_num; /* 12. 常量用 k_xxx */ static int32_t *p_num; /* 13. 指针变量用 p_xxx */ #define OK 0 /* 14. success */ #define NG 1 /* fail */ int32_t standard(void) { /* 15. 函数 花括号*/ hloge("<< %s %d", __func__, MIN(1,5)); return OK; /* 16. TAB键为4个空格 */ } /* 17. <---- 函数间用空格分段 */ int32_t standard2(std_s *p_std) {/* 18. 1. 对于结构体入参尽可能用指针,2. 指针变量用 p_xxx, 3. 指针符号*靠近变量 */ int32_t k = 1; /* 19. 不允许将多个短句放一行 */ uint32_t i = 0; /* 20. =号对齐 */ char *p_str = NULL; 0; /* 21. 变量或指针要尽量初始化,除非明确操作 */ { uint8_t cnt = 0; /* 22. 变量靠近第一次使用处 */ cnt = cnt+cnt+cnt+cnt+cnt+cnt+cnt+cnt+cnt+cnt+cnt+cnt+cnt +cnt; /* 23. 操作符放在新行首 */ } switch ( i ) { /* 24. switch/while/if/for/do 独占一行,需要加花括号, 加空格,突出关键字 */ case 1: break; case 2: break; default: break; } i = i + 1; /* 25. 操作符前面加空格 */ i += 1; /* 26. 选号对齐 */ if ( i > k ) {/* 27. i不能小于k -- while/if/for 写注释,有助于维护人员 */ k = ( i + k ) / 10; /* 28. 用括号表明操作顺序 */ } #ifdef MAX_PATH { /* 29. 宏花括号 */ hlogi("<< %s MAX_PATH:%d", __func__, MAX_PATH); } #endif return OK; /* 30. 用宏或有意义的变量表达, 禁止使用magic num */ }