往期文章:
C规范编辑笔记(一)
C规范编辑笔记(二)
C规范编辑笔记(三)
C规范编辑笔记(四)
C规范编辑笔记(五)
C规范编辑笔记(六)
C规范编辑笔记(七)
C规范编辑笔记(八)
正文:
今天我们来分享一下C规范编辑笔记第九篇,话不多说,我们直接来看~
1、规则—不要将结构的大小计算为其字段大小的总和。计算其大小时候应该使用整个结果变量,而不是单独计算其中的字段总和,如以下实例对比可知:
Bad example:
#define SIZE_TABL 100
...
typedef struct{
int tabl[SIZE_TABL];
size_t size;
} my_struct;
...
size_t sizestruct= sizeof(my_struct.tabl)+sizeof(my_struct.size);
/*这总计算是不符合规则的,不能单独计算再总和*/
Good example:
#define SIZE_TABL 100
...
typedef struct {
int tabl[SIZE_TABL];
size_t size;
} my_struct;
...
size_t sizestruct = sizeof(my_struct); /*正确的计算大小方法*/
2、使用有符号整数时候需要考虑该值被使用时候会不会导致值溢出,最好是建议对其值运算进行判断是否会溢出。
3、检测并删除任何潜在的被零除。运算中不能出现被0除和余的情况。所以规范来将我们需要对分母进行判断,如以下实例可以看出其必要性:
Bad example:
#include <stdint.h>
void func(int8_t i, int8_t j)
{
int8_t result;
result = i / j; //这种情况下就容易出现被0除的风险
...
}
Good example:
#include <stdint.h>
void func(int8_t i, int8_t j)
{
int8_t result;
if (0 == j) //在这个例子中对j是否为0进行判断
{
/* 这里可以写错误提示 */
}
else
{
result = i / j;
}
...
}
4、算术运算应该以有助于可读性的方式编写。方便后期他人代码维护和代码的阅读理解。当然如果你不想让别人去轻易上手你的代码,你可以加点自己的想法进去~ 当然我这里的目的是告诉你规范编写。
5、C语言有许多运算符,根据它们的结合性有不同的优先级。但是,表达式中没有括号,很难理解和校对。因此建议使用括号在多个运算符的情况下。
6、规则-禁止变量的多重赋值。 包含多重赋值的代码很难阅读,也很难维护。 将多变量赋值语句分解成和变量一样多的赋值语句。以下距离对比来看:
Bad example:
a = b = c = d = 1; //虽然这样子也可以,但是不太建议
Good example:
...
a = 1;
b = 1;
c = 1;
d = 1;
好了,第九篇C规范编辑笔记分享我们就到这里了,我们第十篇见~
估计第十篇要到明年2023年年初时候了
本人水平有限,上述信息仅供学习参考,如有错误和不妥之处,请多多指教。
另外创作不易,请勿抄袭,如果有帮助到大家的话希望大家可以点个赞,谢谢~