大小
- 一个C代码文件必须小于 1000 行(包含注释);
- 一个C 函数必须小于150行(包含注释);
注释
- 实现代码与注释比列(6:4)
- 新建文件,在文件头部需添加注释,如下:
/* **************************************************************************** * Copyright (C) 2005-2009 CAMEO Communications, Inc. * * ***************************************************************************/ /* **************************************************************************** * Filename : test.c * LANGUAGE : C * TARGET ENVIRONMENT : Broadcom * -------------------------------------------------------------------------- * HISTORY * 1. Version : 1.0 * Date : 09/17/2009 04:29:01 PM * Author : Liu Guixue , guixueliu@nettech-global.com * Description : * ***************************************************************************/
- C函数前要有注释,如下:
/***************************************************************/ /* Function Name : test_function_header * Description : * Input(s) : * Output(s) : * Returns : TURE/FALSE * Author : * Date : 2009-09-17 */ /***************************************************************/ int test_function_header()
- 复杂的处理,如if,while,for等需要加入注释;
- 注释要用英文;
- 注释使用/* ... */,不能使用 //;
- 修改代码,注释标明修改点;
缩进与留白
- 代码缩进使用Tab键,缩进大小为4个空格;
- 关键字后跟空格;(if else 除外);
- 操作符前后使用空格;
建议
- 尽量复用已有代码;
- 代码接口清晰;
- 返回值尽量用于出错判断;
- 尽量避免使用goto;
......未完待续
1. 编程规范 2. 接口定义、接口调用 (特别是模块间接口;重点看接口参数、返回值、内部实现是否合理;避免直接调用低效的nmh;接口调用是否便于模块关闭、是否合理) 3. 内存管理(CRU Buffer, Memory Pool, Malloc 等使用是否及时 Free) 4. 使用指针(指针未判断是否为NULL,直接使用;释放指针指向内存,需要赋值指针为NULL) 5. Lock问题(锁是否成对使用,调用模块API进行复杂设置,考虑用Event 代替 Withlock 进行异步调用) 6. 代码效率(例如合理选择数据结构-树、链表和哈希表;尽量不使用超过2层的Loop循环;外层循环采用小的loop次数,内层循环采用大的loop次数) 7. 复杂逻辑(例如一个 if 判断包括4~5个条件,用有意义的宏或子程序封装之简化复杂度; 再如超过4层的代码嵌套难以维护和理解,复杂嵌套逻辑可以考虑用break、return、宏或子程序等简化嵌套层数;复杂一般代表需优化!) 8. 全局变量(全局变量未封装就直接使用,全局变量未分组管理而独立使用,函数内部用全局变量状态 控制执行两大块 不同的代码) 9. 使用常量(代码里不要出现 2,100,1 等常量值,用有意义的宏名称代替) 10. 重复代码(多个函数内部使用相同代码,必须抽取子函数) 11. 代码可读(合理命名,函数和变量命名,表达的意思要准确合理,追求没有注释即可自然阅读) 12. 代码注释(复杂逻辑需注释,代码块意图需注释,不要把代码直接翻译为注释 e.g: if variable equal true) 13. 代码对其(代码编辑器中,将Tab转变为4个Spaces)