C潜规则篇之符号命名

    C语言中如果能从名字看出符号(变量函数等)的类型和含义,就能一定程度上提高代码可读性,为此前人也总结出很多技巧,如著名的匈牙利命名法。不过每个人的盲点和兴奋点不同,预防与激励方法也不可能相同,所以各种命名法都有争议。这里只提醒大家注意好命名的作用,有意识地总结适合自己的方法,从而提高工作效率。下面是个人习惯,供参考:

    1)宏定义和枚举常数全部用大写字母命名,在复合词里用下划线隔开每个单词。如:DISP_BUF_SIZE, MIN(), MAX()

    2)全局变量以gg+模块缩写(大写)作前缀,后面跟第一个字母大写的变量名。C中全局变量是不稳定因素,要保持警惕(见重入一章),用前缀显式标识变量为全局,能起到提示作用。名称前加上模块的缩写,可以在多模块集成链接时,避免模块间全局变量重名(见命名污染),如gOSCounter, gALGErrRet等。

    3)局部变量中,循环计数/数组下标可用i,j,k,m依次表示。除此以外,其它变量加前缀表示变量类型,这是匈牙利命名法的思想,前缀没有统一规范,个人推荐如下:p代表指针,pf指向函数的指针,f单精度浮点,db双精度浮点,u,s分别代表无符号与有符号数,即unsignedsigned。这样可以从变量名看出其类型,并避免一些bug,如:

    unsigned char i;

    if(i<=-1){  ……}  //错误,-1将自动转为无符号

    或许一开始程序员限定i是一个正数,于是定义成无符号,但程序编写过程中又想和0比较,此时很可能忘记其无符号属性,导致  i<=-1这种错误写法(见陷阱篇)。如果i改成uCnt,前缀”u”能做出提醒,所以这种命名方式物有所值。

    前缀确定后,后面变量名第一个字母大写以分段,多个单词首字母也大写,不必加下划线。符号名要用含义确切的词,不要用甲乙丙丁,1234这类偷懒方法。如果太长,尽量缩写。如:pBuf, pfFun1, fDivRet, sCommCh, uCount等等

    4)函数命名与变量类似,用缩略词,单词首字母大写,如:PutChar(),CodecInit()等。

    制定并遵守命名规则的目的只有一个,那就是增加可读性,无论是为自己或是他人。从符号命名上往往就能以小见大,影射出一个人的代码编写水平。当然命名只是代码规范的一部分,更具体的规范下节详述.

你可能感兴趣的:(c,符号命名)