zoukankan      html  css  js  c++  java
  • C/C++命名规范

    据考察,没有一种命名规则可以让所有的程序员赞同,程序设计教科书一般都不指定命名规则。命名规则对软件产品而言并不是“成败悠关”的事,我们不要化太多精力试图发明世界上最好的命名规则,而应当制定一种令大多数项目成员满意的命名规则,并在项目中贯彻实施。

    下面分别按照“共性规则”、“W简单的indows应用程序命名规则”、和“简单的Linux应用程序明命名规则”这三个分类来讲述C++的命名规则:


    1.1 共性规则


    本节论述的共性规则是被大多数程序员采纳的,我们应当在遵循这些共性规则的前提下,再扩充特定的规则,如1.2和1.3中所描述的。

    【规则1-1-1】 标识符应当直观且可以拼读,可望文知意,不必进行“解码”。

    标识符最好采用英文单词或其组合,便于记忆和阅读。切忌使用汉语拼音来命名。程序中的英文单词一般不会太复杂,用词应当准确。例如不要把CurrentValue写成NowValue。

    【规则1-1-2】 标识符的长度应当符合“min-length && max-information”原则。

    几 十年前老ANSI C规定名字不准超过6个字符,现今的C++/C不再有此限制。一般来说,长名字能更好地表达含义,所以函数名、变量名、类名长达十几个 字符不足为怪。那么名字是否越长约好?不见得! 例如变量名maxval就比maxValueUntilOverflow好用。单字符的名字也是有用的, 常见的如i,j,k,m,n,x,y,z等,它们通常可用作函数内的局部变量。

    【规则1-1-3】 命名规则尽量与所采用的操作系统或开发工具的风格保持一致。

    例如Windows应用程序的标识符通常采用“大小写”混排的方式,如AddChild。而Unix应用程序的标识符通常采用“小写加下划线”的方式,如add_child。别把这两类风格混在一起用。

    【规则1-1-4】 程序中不要出现仅靠大小写区分的相似的标识符。

    例如:

    int x, X; // 变量x 与 X 容易混淆

    void foo(int x); // 函数foo 与FOO容易混淆

    void FOO(float x);

    【规则1-1-5】 程序中不要出现标识符完全相同的局部变量和全局变量,尽管两者的作用域不同而不会发生语法错误,但会使人误解。

    【规则1-1-6】 变量的名字应当使用“名词”或者“形容词+名词”。

    例如:

    float value;

    float oldValue;

    float newValue;

    【规则1-1-7】 全局函数的名字应当使用“动词”或者“动词+名词”(动宾词组)。类的成员函数应当只使用“动词”,被省略掉的名词就是对象本身。

    例如:

    DrawBox(); // 全局函数

    box->Draw(); // 类的成员函数

    【规则1-1-8】 用正确的反义词组命名具有互斥意义的变量或相反动作的函数等。

    例如:

    int minValue;

    int maxValue;


    int SetValue(…);

    int GetValue(…);


    1.2 简单的Windows应用程序命名规则


    作者对“匈牙利”命名规则做了合理的简化,下述的命名规则简单易用,比较适合于Windows应用软件的开发。

    【规则1-2-1】 类名和函数名用大写字母开头的单词组合而成。

    例如:

    class Node; // 类名

    class LeafNode; // 类名

    void Draw(void); // 函数名

    void SetValue(int value); // 函数名

    【规则1-2-2】 变量和参数用小写字母开头的单词组合而成。

    例如:

    BOOL flag;

    int drawMode;

    【规则1-2-3】 常量全用大写的字母,用下划线分割单词。

    例如:

    const int MAX = 100;

    const int MAX_LENGTH = 100;

    【规则1-2-4】 静态变量加前缀s_(表示static)。

    例如:

    void Init(…)

    {

    static int s_initValue; // 静态变量



    }

    【规则1-2-5】 如果不得已需要全局变量,则使全局变量加前缀g_(表示global)。

    例如:

    int g_howManyPeople; // 全局变量

    int g_howMuchMoney; // 全局变量

    【规则1-2-6】 类的数据成员加前缀m_(表示member),这样可以避免数据成员与成员函数的参数同名。

    例如:

    void Object::SetValue(int width, int height)

    {

    m_width = width;

    m_height = height;

    }

    【规则1-2-7】 为了防止某一软件库中的一些标识符和其它软件库中的冲突,可以为各种标识符加上能反映软件性质的前缀。例如三维图形标准OpenGL的所有库函数均以gl开头,所有常量(或宏定义)均以GL开头。


    1.3 简单的Linux应用程序命名规则

    【规则1-3-1】 变量名必须有一定的意义,并且意义准确。

    例如有一个变量用于保存图书的数目,可以命名为number_of_book或者num_of_book。不建议使用i,因为它没有意义。也不建议使用number或book,因为意义不准确。

    【规则1-3-2】 不建议大小写混用。

    如定义一个计数变量,int nCount;这在Windows中是一个很好的变量名,其中nCount的首字母n用来说明这个变量的类型是int。但在Linux下不建议大小写混合使用,一般标识符只由小写字母,数字和下划线构成。

    【规则1-3-3】 在失去意义的情况下,尽量使用较短的变量名。

    例如有一个变量,用于暂时存储一个计数值,把变量命名为tmp_count显然要比this_is_a_temperary_counter好。

    【规则1-3-4】 不采用匈牙利命名法表示变量的类型。

    如int nCount;n用于说明变量的类型,在Linux中不建议这样命名变量。

    【规则1-3-5】 函数名应该以动词开头,因为函数是一组具有特定功能的语句块。

    比如一个函数,它用于取得外部输入的数值,则可以命名为get_input_number。

    【规则1-3-6】 尽量避免使用全局变量。


    1.4 声明

    文章前半部分根据林锐的《高质量C++/C编程指南》中第3章“命名规则”整理,后半部分Linux应用程序命名规则根据童永清的《Linux C编程实战》第2章2.7节“命名规范”整理。
  • 相关阅读:
    FEniCS 1.1.0 发布,计算算术模型
    Piwik 1.10 发布,增加社交网站统计
    淘宝褚霸谈做技术的心态
    CyanogenMod 10.1 M1 发布
    Druid 发布 0.2.11 版本,数据库连接池
    GNU Gatekeeper 3.2 发布
    Phalcon 0.9.0 BETA版本发布,新增大量功能
    EUGene 2.6.1 发布,UML 模型操作工具
    CVSps 3.10 发布,CVS 资料库更改收集
    Opera 移动版将采用 WebKit 引擎
  • 原文地址:https://www.cnblogs.com/liujiahi/p/2196349.html
Copyright © 2011-2022 走看看