zoukankan      html  css  js  c++  java
  • [转]程序变量命名推荐规范

    变量的规范命名是为了增强代码的可读性和容易维护性。C++程序变量命名只有几条必须遵守的“死规则”,这些规则如下:
    
          1.变量名只能是字母(A-Z,a-z)、数字(0-9)或下画线。
    
      2.第一个字母不能是数字,例如2Lerver这不是一个合法的C++变量。
    
     3.不能是c++关键字,例如不能用class这个单词来命名一个变量。
    
     4.区分大小写,例如iA和ia是两个不同的变量。
    
    理论上,在遵守了上面几条规则的前提下,所声明的变量名称都是合法的。比如下面的命名:
    
    char xueshengming[20];   //学生名
    
    char a;                  //命名一个整数,但变量名毫无意义
    
    这样的变量命名尽管是合法的,但可读性非常差。正规的软件公司,对于变量命名往往都有自己的一个推荐规范。不同公司的规范又会有一些差别。当一个程序员从一个公司跳槽到另一个公司,甚至会出现不习惯新公司代码规范的现象。
    
    万事万物,要是有一个统一的规范,也许程序员这个行业会少一些烦恼。俗话说得好:没有规矩,不成方圆。以下是笔者多年编码得出的变量命名的心得体会,在此总结如下,并奢望有招一日能成为行业规范。
    
    1.变量命名的宗旨:用最短的字符表示最多的意义。
    
    int iPosX;    // Pos表示位置,X表示横坐标
    
    2.使用变量前缀
    
    在变量前带上小写前缀可以很直观的看出变量的数据类型,而不必到变量的定义处去查看。常用的数据类型推荐变量前缀:
    
    l       整型的前缀
    
    short sValue;  // s为short的前缀
    
    int iAge;      // i为int的前缀
    
    unsigned int uiAge;   // ui为unsigned int的前缀(两个单词的首字母)
    
    long lValue;    // i为long的前缀
    
    l       浮点型的前缀
    
            float fScore;    // f为float的前缀
    
            double dValue;    // d为double的前缀
    
    l       字符型的前缀
    
            char cChar;        // c为char的前缀
    
    TCHAR tcChar     //多字节字符和Unicode字符兼容类型的前缀tc
    
    wchar_t wcChar   //宽字符前缀wc
    
    l       字符串的前缀
    
    char szName[30];   // sz为C语言字符串的前缀
    
    string strName;     // str为C++字符串变量的前缀
    
    CString strInfo;    // str为MFC字符串变量的前缀
    
    l       布尔型的前缀
    
            bool bPass;       // b为bool的前缀
    
    l       指针型的前缀
    
            int * pValue;      //p为指针的前缀
    
    说明:由于指针是指向一定数据类型的变量,因此p后面要不要再加一个前缀一直让我举棋不定。如果再加上前缀比如:    int * piKey; 
    
    char * pszInfo;
    
    这样似乎意义更完整,但势必会增加变量的字符长度。因此,这里就不硬性规定了。但是,指正变量以p开头应该是雷也打不动的。
    
    l       数组的前缀
    
            int arrNum[10]; // arr为数组的前缀
    
            说明:和指针变量一样,arr后是否再加数组元素的数据类型前缀取决于你自己。
    
    string arrstrName[3];        //C++字符串数组,加上去似乎很别扭
    
    l       枚举变量的前缀
    
            enum emWeek;   // em为枚举变量的前缀
    
    l       结构变量的前缀:t
    
    T_NODE tNode; //结构名称以T_开头
    
    l       字节变量的前缀:by
    
    BYTE byInfo;
    
    l       字变量的前缀
    
    DWORD dwInfo;  //双字
    
    WORD   wInfo;  //单字
    
    l       字符指针的前缀
    
    LPCTSTR ptszInfo; // ptsz表示前缀,t表示TCHAR类型
    
    LPCSTR pszInfo;
    
    LPSTR pszInfo;
    
    l       STL容器类型前缀
    
    vector<int> vecValue;  
    
    说明:vec表示vector容器的前缀,为了简化变量,变量体后面不再使用前缀
    
    list<double> lstInfo;
    
    l       MFC绑定控件变量的前缀
    
    CEdit m_ctlName; //对象变量,变量体前统一用ctl表示
    
    int   m_iAge;  //值变量,变量体有表示值数据类型的前缀
    
    说明:由于长短指针在32位操作系统后已无区别,所以不再区分,一律以p开头,这也与指针变量以p开头的原则贴得更近。
    
    l       矩形结构的前缀:rc
    
    RECT rcClient;  
    
    CRect rcWin;
    
    l       句柄对象一律以h开头
    
    HWND hWndName;
    
    HBRUSH hBr;
    
    HPEN hPen;
    
    HBITMAP hBmpBack;
    
    l       windows颜色类型的前缀:cr
    
    COLORREF crFront;  
    
    l       windows中DC(设备上下文)类型的前缀
    
    CClientDC dcClient;
    
    3. 类的成员变量以m_开头,后面为变量体,变量体依然要有前缀。
    
    int m_iDepth;
    
    4. 定义一个变量,为了简化,在不影响变量意义的情况下,可以仅仅使用前缀。
    
    RECT rc;
    
    5. 全局变量一律以g_开头,后面为变量体,变量体依然要有前缀。
    
    int  g_iNums;
    
    6. 定义结构体为了保证和C语言和C++的写法兼容性,一律采用typedef语句。
    
    typedef  struct tagINFO_NODE
    
    {
    
    int iData;
    
    tagINFO_NODE , ;, ; * p, Next;</, o:p ,>
    
    }T_INFO_NODE, *PT_INFO_NODE;
    
    7. 变量体如果是多个单词,每个单词的首字母大写。
    
    int iStudentAge;
    
    8. 在意义明确的情况下可以仅仅使用首字母命名变量可以缩短变量名。
    
    int iID;
    
    说明:仅使用首字母表示变量体的前提是保证变量的意义,比如变量iStudentAge如果声明成:
    
    int iSA; //这样将失去意义,不可取
    
    9. 定义一个类使用C作为类名的前缀。
    
    class CStudent
    
    {
    
       …
    
    }
  • 相关阅读:
    Android sendToTarget
    OSI七层模型具体解释
    JAVA中字符串比較equals()和equalsIgnoreCase()的差别
    [Angular 2] ng-class and Encapsulated Component Styles
    [Angular 2] Passing data to components with @Input
    [Angular 2] Template property syntax
    [Angular 2] Adding a data model
    [Angular 2] Using ng-model for two-way binding
    [Angular 2] ngFor
    [Angular 2] Inject Service
  • 原文地址:https://www.cnblogs.com/Wzqa/p/2823117.html
Copyright © 2011-2022 走看看