g_uiCurrentUser = 0; /* 设置当前用户索引号 */
应必为:
for (uiUserNo = 0; uiUserNo < MAX_USER_NO; uiUserNo++)
{
...; /* 初始化用户数据 */
}
g_uiCurrentUser = 0; /* 设置当前用户索引号 */
pSamplePointer = NULL;
<规则14> 每个函数的源程序行数原则上应该少于200行。
对于消息分流处理函数,完成的功能统一,但由于消息的种类多,可能超过200行的限制,不属于违反规定。
<规则15> 语句嵌套层次不得超过5层。
嵌套层次太多,增加了代码的复杂度及测试的难度,容易出错,增加代码维护的难度。
<规则16> 用sizeof来确定结构、联合或变量占用的空间。
这样可提高程序的可读性、可维护性,同时也增加了程序的可移植性。
<规则17> 避免相同的代码段在多个地方出现。
当某段代码需在不同的地方重复使用时,应根据代码段的规模大小使用函数调用或宏调用的方式代替。这样,对该代码段的修改就可在一处完成,增强代码的可维护性。
<规则18> 使用强制类型转换。
示例:
USER_RECORD *pUser;
pUser = (USER_RECORD *) malloc (MAX_USER * sizeof(USER_RECORD));
<规则19> 避免使用 goto 语句。
<规则20> 避免产生摮绦蚪釘(program knots),在循环语句中,尽量避免break、goto的使用。
如下例子:
for( i = 0; i < n; i++)
{
bEof = fscanf( pInputFile, "%d;", &x[i]);
if( bEof == EOF )
{
break;
}
nSum += x[i];
}
最好按以下方式书写,避免程序打摻釘:
for( i = 0; i < n && bEof= EOF; i++)
{
bEof = fscanf( pInputFile, "%d;", &x[i]);
if( bEof!= EOF )
{
nSum += x[i];
}
}
<规则21> 功能相近的一组常量最好使用枚举来定义。
不推荐定义方式:
/* 功能寄存器值 */
#define ERR_DATE 1 /* 日期错误 */
#define ERR_TIME 2 /* 时间错误 */
#define ERR_TASK_NO 3 /* 任务号错误 */