开发规范
-
熟练掌握模块所涉及的硬件设计,如所用的电,GPIO,CLOCK等。
-
开发阶段时序一定要符合spec。
-
关注负责模块的耗电流,包括工作电流,模块加入前后系统底电流变化。
-
新功能和较大的修改需要通过评审。
-
整体功能完成后需由硬件部配合验证时序。
-
对于因为自己代码出现的编译或者运行时的 warning 都需要处理掉。
-
主管及时更新项目表格中的模块调试状态。
编程规范
1: 用 #if XXX #endif 的时候需要在 #endif 中指名对应的是哪个 #if 格式如下:(多个#if时)
void __init msm8226_add_drivers(void) { #if NOT_DO_INIT msm_smem_init(); msm_init_modem_notifier_list(); #if JUST_FOR_TEST msm_smd_init(); #if NOT_USE_RPM_SPM_PM msm_rpm_driver_init(); msm_spm_device_init(); msm_pm_sleep_status_init(); #endif /* NOT_USE_RPM_SPM_PM */ #endif /* JUST_FOR_TEST */ rpm_regulator_smd_driver_init(); #endif /* NOT_DO_INIT */ }
2: 注释掉的代码如果超过两行请使用 #if 0 的方式。如果使用 #if 0 则需要在后面跟上一个标识,标识后面可以跟上注释,并在对应 #endif 中使用此标识:
void __init msm8226_add_drivers(void) { msm_smem_init(); msm_init_modem_notifier_list(); msm_smd_init(); #if 0 //TEST_LABEL: 注释 msm_rpm_driver_init(); msm_spm_device_init(); msm_pm_sleep_status_init(); rpm_regulator_smd_driver_init(); qpnp_regulator_init(); if (of_board_is_rumi()) msm_clock_init(&msm8226_rumi_clock_init_data); else msm_clock_init(&msm8226_clock_init_data); tsens_tm_init_driver(); #endif /* TEST_LABEL */ msm_thermal_device_init(); }
3:缩进格式保持和源文件一致,如果是新建文件, 缩进使用4个空格
4:对于不能一眼就看出来的功能或者算法,需要写注释说明功能或者原理等。自己写的代码文件要有说明
5:对于自己定义的对外接口函数需要对其说明,包括功能,参数,返回值,格式如下:
/*************************************************
* Description: 函数功能、性能等的描述
* Input: 输入参数说明,包括每个参数的作用、取值说明及参数间关系。
* Return: 函数返回值的说明
**************************************************/
6:对于数据结构申明,需要在成员后面注明功能等
7:注释的格式要统一起来,[SIMT-姓名-年月日],姓请采用首字母,名字请使用拼音全称,不采用英文命名规则,采用顺序拼写,比如“周靓炯”
注释示例:
[SIMT-zliangjiong-20140101]
8:单行代码也需要用{},比如:
if(ret < 0) { return ret; }
9:命名要有意义,Review人员需要在codereview或者代码评审的时候去关注
10:代码行最大长度宜控制在70至80个字符以内
长表达式要在低优先级操作符处拆分成新行,操作符放在新行之首(以便突出操作符),拆分出的新行要进行适当的缩进,使排版整齐,语句可读
if ((very_longer_variable1 >= very_longer_variable12) && (very_longer_variable3 <= very_longer_variable14) && (very_longer_variable5 <= very_longer_variable16)) { DoSomething(); }