高质量的C语言须具备以下几种特性:
1.健壮性。即程序充分考虑了可能出现的各种情况,必给予相应的对策,如将函数的返回值用于返回此函数处理的状态,而将形参作为隐性输出。
2.可读性。程序要实现的功能必须一目了然并附有适当的注释。当然好的代码是不依赖注释,就能清晰易懂的,如函数实现的功能尽可能的简单单一,函数名产用动名形式,如 get_char(),适当使用枚举和结构体,让程序的结构更加紧凑和清晰。如将各种状态用枚举定义,typedef enum{STANDARD,OVER,UNDER,} sta;如将物体的特性用结构体封装typedef struct{int name; int age; int sex; int length; int weigt;}somebody;
3.可移植性。因为同样的代码可能用于不同的平台,使用不同的编译器,如在32bit的平台,long是32bit,而在64 bit平台则为64bit.
因此在写代码时,应考虑能够当换到不同的平台时,只需对代码进行少量的改动即可。如#if (SYTTEM == _32bit) typedef unsigned long int DWORD; #elif (SYSTEM == _64bit) typedef int DWORD;
再用DWORD去定义你想定义的变量,这样,当平台变动时,只需改动这一行语句即可,从而做到一改都改。
4.高效性。事前估算方法度量效率,可计算其时间复杂度O(?)及空间复杂度,设计算法时,可先建出数学模型,找出最简单的算法即执行时间短,占用空间少。
5.可复用性。即尽量减少功能有重叠或者有交叉的函数,与可读性中提到的函数功能尽可能单一有异曲同工之妙。如根据一个人的BMI值看此人的胖瘦.
sta get_sta(somebody you)
{
float bmi;
bmi = (float)you.weigt / (float) (you.length*you.length);
if (bmi >= 18.5 && bmi <= 22) return STANDARD;
else if (bmi <18.5) return UNDER;
else return OVER;
}
如果我们只是想获得you的BMI值的话,就要重新编写一个函数
float get_BMI(somebody you)
{
return ((float)you.weigt / (float) (you.length*you.length));
}
那get_sta和get_BMI就会有部分交叉,因此正确的作法应该是:
sta get_sta(somebody you)
{
float bmi;
bmi = get_BMI(you);
/*下面的照写*/
........
}