代码检查是许多公司都需要的过程,但往往是相同形式的过程。 通常,检查的同事只要保证你的代码可以编译,不发生问题就可以通过。 代码到底有一定的规范性吗?
如果公司严格遵循开发流程,代码检查也可能变为下图中的红色。 代码检查表明可以在设计者和开发人员之间识别错误,并避免出现设计一套方案开发又开发自己又写出了另一套方案问题。 代码检查在业务密集型系统中尤为重要,这使得开发人员无法预测由于业务不完善而导致理解错误时会出现的问题。 这时的代码检查可以早期发现问题,也是开发人员向别人解释自己了解的业务信息的一个渠道。
大多数公司的代码都是同事之间相互查的。 通常,我们会遇到这种开头提到的情况,但我们可以保证编译已经通过,或者没有执行这一步骤的详细步骤。 本文的重点也放在这里,讨论如何进行这种情况下C的代码进度调查。 我认为可以将代码审查从大到小细分为几个步骤,如果按照这样的流程下去,就可以过滤掉大多数基本上不需要犯的错误。
文件审查1文件时,有说明信息,明确记载文件的主要作用信息、文件名等
2头文件是否只包含宏定义以防止重复引用
Exp: #ifndef_A_HH_
#define_A_HH_
………//class info
#endif //_A_HH_
3声明函数时有明确的返回值
Exp :缺省情况下,编译器会提到为什么返回值的函数将返回类型设置为int。 在这种情况下,很难确定返回的是否是数据类型。 很可能是手的误操作引起的。
函数审阅
1如果函数被恰当地声明,那么好的函数是什么有助于调用者和后期维护
2准入个数合理性检验,一般不超过6个,超过的可以考虑使用结构体。
参数多会降低函数调用的效率。 在以下情况下更优选将指针作为参数转发选择:
1需要将大量数据和大数据结构作为输入进行传输
2被调函数需要修改调用函数的数据
3条目合法性检查(空指针、取值范围、内存越界)、
Exp
1.NULL==param
2 .带来一个bug后,最好给出一个参数和bug的长度。
…… .
变量审阅1是否已初始化
2型是否存在不一致的比较操作(特别是unsigned型和signed型的比较)注意对unsigned型的边界判断。
3是否已定义变量但未使用
内存资源查看
1是否对数组进行了越界操作。
2复制内存时判断了长度吗? 对于Strcpy,请注意dst大于src内存。 否则,内存会越界
3申请内存后,是否判断内存申请成功。
Exp:char p=new char[100];
if (空值==p ) )
{
返回;
}
4在处理异常事态时,有没有忘记直接返回释放内存? 您是否特别注意在抛出一些异常时在catch时释放资源?
5释放文件句柄。 Open对应于close。
语句的规范性检查
是否独占1{ }行(习惯问题。 请参阅。
Exp :
If () )
{。
}
Else
{。
}
21行是否只定义一个变量。
3支持内存开拓malloc和free; new和delete对应。
4==是否写错了。
为了防止这样的错误,建议将常数放在前面
这里只列举了本人认为相对比较重要的一些点,其他的细节就不多介绍了。。。睡觉啦,明天还得上班