11.命名约定

优质
小牛编辑
127浏览
2023-12-01

毫无疑问,每个独立的工程都有一套自己的命名约定,不过仍然有一些通用的规则值得参考。

  • 为系统用途保留以下划线开头或下划线结尾的名字,并且这些名字不应该被用在任何用户自定义的名字中。大多数系统使用这些名字用于用户不应 该也不需知道的名字中。如果你一定要使用你自己私有的标识符,可以用标识它们归属的包的字母作为开头。
  • Enum常量应该大写或全部大写。
  • 函数名、typedef名,变量名以及结构体、联合体与枚举标志的名字应该用小写字母。
  • 很多"宏函数"都是全部大写的。一些宏(诸如getchar和putchar)使用小写字母命名,这事因为他们可能被当成函数使用。只有在宏的行为类似一 个函数调用时才允许小写命名的宏,也就是说它们只对其参数进行一次求值,并且不会给具名形式参数赋值。有些时候我们无法编写出一个具有函数行为的 宏,即使其参数也只是求值一次。

  • 避免在同一情形下使用不同命名方式,比如foo和Foo。同样避免foobar和foo_bar这种方式。需要考虑这样所带来的困惑。

  • 同样,避免使用看起来相似的名字。在很多终端以及打印设备上,'I'、'1'和'l'非常相似。给变量命名为l特别糟糕,因为它看起来十分像常量'1'。

通常,全局名字(包括enum)应该具有一个统一的前缀,通过该前缀名我们可以识别出这个名字归属于哪个模块。全局变量可以选择汇集在一个全局结 构中。typedef的名字通常在结尾加一个'_t'。

避免名字与各种标准库中的名字冲突。一些系统可能包含一些你所不需要的库。另外你的程序将来某天很可能也要扩展。