编程规范

指导你避免写出坏代码!

1、编程时指导思想的优先级顺序。

第一优先级

正确性:功能性需求

健壮性:异常处理

第二优先级

可维护性:代码是给人看的!

可移植性:代码与环境的相关程度尽可能低

第三优先级

效率

资源

2、代码应该简单、清晰,显式表达意图,避免复杂的编程技巧。

3、在同一层次编写代码,不要用“如何做”取代“做什么”。

1)段落结构划分

2)自下而上,自上而下

3)函数功能单一

4、业务领域内有含义的类型,应进行类型化,而非直接使用INT16U等“可移植类型”,非特殊情况勿用int等内建类型。

5、全局函数和全局变量,只在唯一一个头文件里存在前置声明,不得在实现文件内extern来访问它们。

6、函数平均长度不超过50行。(增强:平均长度不超过20行,最长不超过50行。)

7、宏、常量,全部使用大写字母来命名。

8、使用骆驼式命名,名字要体现其功能,核心信息放在名字的前部显眼位置。建议:使用g_(global)、s_(static)前缀区分变量的活动范围。

9、一行只定义一个变量,一个变量只执行一个功能。

10、变量使用前必须先赋初值,简单局部变量在定义时赋初值;复杂变量在定义块结束处立刻赋初值;动态申请的内存在申请完成后立即赋初值。

11、一行只执行一条语句,不要使用“,运算符”来合并语句。

12、if/for/while/do/switch独占一行,"{" 与 "}"各占一行且对齐。

do
{

}while();

13、if语句不能直接写赋值语句。

避免if语句职责不单一

14、if内的条件语句不得超过3个条件表达式。

若非则不利于阅读,考虑封装为函数

if( (A && B) || C || D )

15、for循环语句,初始化语句只能对循环变量赋初值,循环体内不得修改循环变量。

16、switch语句,最后一个分支必须是default分支(作为异常处理,而非通用处理);每个分支必须使用break或者return结尾。

允许合并case,不允许fall down~

17、if、for、do/while、switch累计不得超过3重。

代码逻辑复杂度评估标准为圈复杂度,显然越低越好。

18、除++、--运算符和复合运算符(+=等),不得再有二元运算符。

18、用()明确运算符的求值顺序。

回避运算符优先级!!多个操作数时尽量避免。

19、代码自注释!!

代码应该使用精心命名的变量名和函数名实现自注释,以减少注释。

20、意愿层注释!!解释“为什么”!!

在意愿层次上进行注释,表达代码本身表达不了的信息,解释“为什么”而不是“是什么”。

21、接口函数前必须有注释,说明函数功能,解释各参数等,内部函数不强制加这样的注释。

22、指针变量移交了内存所有权而自己不立刻结束生命周期的,必须明确清为NULL。

指针最乱!!问题最大!!

if(p!=NULL)
{

}

23、对所有外部输入,包括入参、调用外部接口的返回值或查询到的数据,都需要进行合法性检查,尤其是对于指针和包长等。

防御式编程!!抱以怀疑态度!!

模块内部,持以信任。梳理代码流程找到异常原因。

24、对于内存操作要特别主语可能的内存越界内存泄露,动态内存申请后必须判断是否成功,原则上内存谁申请谁释放。

动态内存必校验,谁申请谁释放。

25、禁止把局部变量(或其他堆栈上的内存地址)指针传给其他任务或进程使用。

防止“野指针”的存在!!

26、对链表的处理,要注意是否可能会导致成环,尤其小心并发处理,必要时增加遍历链表最大节点数的控制。

27、缩进问题:用4个空格代替Tab!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值