避免使用不易理解的数字,用有意义的标识来替代。涉及物理状态或者含有物理意义的常量,不应直接使用数字,必须用有意义的枚举或宏来代替。
示例:如下的程序可读性差。
if (Trunk[index].trunk_state == 0)
{
Trunk[index].trunk_state = 1;
... // program code
}
应改为如下形式。
#define TRUNK_IDLE 0
#define TRUNK_BUSY 1
if (Trunk[index].trunk_state == TRUNK_IDLE)
{
Trunk[index].trunk_state = TRUNK_BUSY;
... // program code
}
5 变量与结构
5.1 谨慎使用全局(公共)变量
(1)去掉没必要的公共变量。公共变量是增大模块间耦合的原因之一,故应减少没必要的公共变量以降低模块间的耦合度。
(2)仔细定义并明确公共变量的含义、作用、取值范围及公共变量间的关系。在对变量声明的同时,应对其含义、作用及取值范围进行注释说明,同时若有必要还应说明与其它变量的关系。
(3)明确公共变量与操作此公共变量的函数或过程的关系,如访问、修改及创建等。明确过程操作变量的关系后,将有利于程序的进一步优化、单元测试、系统联调以及代码维护等。这种关系的说明可在注释或文档中描述。示例:在源文件中,可按如下注释形式说明。
全局变量 函数System_InitInput_RecPrint_RecStat_Score
StudentCreateModifyAccessAccess
ScoreCreateModifyAccessAccess, Modify
注: Create表示创建,Modify表示修改,Access表示访问。
其中,函数Input_Rec、Stat_Score都可修改变量Score,故此变量将引起函数间较大的耦合,并可能增加代码测试、维护的难度。
(4)当向公共变量传递数据时,要十分小心,防止赋与不合理的值或越界等现象发生。对公共变量赋值时,若有必要应进行合法性检查,以提高代码的可靠性、稳定性。
(5)防止局部变量与公共变量同名——通过使用较好的命名规则来消除此问题。
5.2 合适地定义和使用结构
结构的功能要单一,是针对一种事务的抽象