zoukankan      html  css  js  c++  java
  • 匈牙利风格

    由于匈牙利风格信息冗余,并与编码规范的其它条款冲突,所以它的存在仅限于VC中。
    下面是它的命名部分规则:

    1. 类的命名 C+首字母大写的单词组合,通常是名字性短语,一般不含下划线
    如CMyClass

    2 函数(类成员函数) 首字母大写的单词组合,通常是动宾结构的短语一般不含下划线
    如 GetName(), PostMessage(),SaveProfile()等
    3 成员变量 m_开头,小写的类型标记标记+首字母大写的单词组合,通常是名字性短语
    其中,小写的类型标记,DWORD简写为dw,int 记为 i, usigned int记为u或n,HANDLE记为h,Window记为wnd, 以0结尾的字符串记为sz,CString记为str
    如 m_szName, m_strName,m_nAge
    4. 全局变量同成员变量,只是将m_改为g_
    5. 静态变量同成员变量,只是将m_改为s_
    6. 参数, 同成员变量,只是去掉m_,无前缀 如SaveProfile(NewProfile)
    7. 指针,通常是与变量前叫p表示,指向指针的指针则是pp开头


    匈牙利命名法 按照MS方式编程:匈牙利符号表示法
    匈牙利符号表示法包括许多与下列命名有关的约定:
    (1)变量
    (2)函数
    (3)类型和常量
    (4)类
    (5)参数
    匈牙利符号表示法的前缀代码指导说明书:


    **************************************************************************
    前缀 数据类型(基本类型)
    C 字符
    BY 字节
    N 短整数和整数(表示一个数)
    I 整数
    X,Y 短整数(通常用于X坐标和Y坐标)
    CX,CY短整数(通常用于表示X和Y的长度,C表示计数)
    B 布尔型
    W UINT(无符号数)和WORD(无符号字)
    L LONG(长整数)
    DW DWORD(无符号长整数)
    FN 函数指针
    S 串
    SZ,STR 以0字节终止的字符串
    LP 32位长整数指针
    H 编号(常用于表示Windows对象)
    MSG消息
    **************************************************************************
    变量的命名:
    应用匈牙利表示法,变量可用上表中的前缀代码来表示。另外,当一个变量是由一个或几个子名构成时,每一个子名都要以大写字母开头。下

    面是几个例子:
    char *szfileName; // a nulla terminated string:以0终止的字符串
    int *lpidate;// a 32-bit pointer to an int:指向一个整型变量的32位的长指针
    Bool,bSemaphore; //a boolean value
    WORD dwMaxCount // a 32-bit unsigned WORD
    尽管我们了解一个函数的局部变量没有说明,但是也有个别表示全局变量必须要以 g_ 开头:
    int g_iXPos;// a global x-position
    int g_iTimer; // a global y-position
    char *g_szString //a global NULL terminated string
    函数的命名:
    函数和变量的命名方式相同,但是没有前缀,换句话说,子名的第一个字母要大写。下面是几个例子:
    int PlotPixel(int ix,int iy,int ic);
    void *MemScan(char *szString);
    而且,下划线是非法的。例如,下面的函数名表示是无效的匈牙利表示法:
    int Get_Pixel(int ix,int iy);
    类型和常量的命名:
    所有的类型和常量都是大写字母,但名字中可以允许有下划线。如:
    const LONG NUM_SECTORS=100; // a C++ style constant
    #define MAX_CELLS 64; // a C style constant
    #define POWERUNIT 100;// a C style constant
    typedef unsigned char UCHAR;// a user defined type
    类的命名
    类命名的约定可能要麻烦一点。但我也看到有很多人在使用这个约定,并独立地进行补充。不管怎么说,所有C++的类必须以大写C为前缀,类

    名字的每一个子名的第一个字母都必须大写:
    class CVector// the chinese mean of vector is 矢量
    {
    public
    CVector();
    {ix=iy=iz=imagnitude=0;} //the chinese mean of magnitude is 大小
    CVector(int x, int y, int z)
    {ix=x;iy=y;iz=z;}
    ......
    private:
    int ix,iy,iz;//the position of the vector
    int imagnitude; //the magnitude of the vector
    ......
    }
    参数的命名
    函数的参数命名和标准变量命名的约定相同。但也不总是如此。如:
    UCHAR GetPixel(int x,int y);
    这种情况下,更准确的匈牙利的函数原型是:
    UCHAR GetPixel(int ix,int iy)

  • 相关阅读:
    第三届蓝桥杯C++B组国(决)赛真题
    第二届蓝桥杯C++B组国(决)赛真题
    第二届蓝桥杯C++B组国(决)赛真题
    第二届蓝桥杯C++B组国(决)赛真题
    第二届蓝桥杯C++B组国(决)赛真题
    第二届蓝桥杯C++B组国(决)赛真题
    Java实现矩阵相乘问题
    Java实现矩阵相乘问题
    Java实现矩阵相乘问题
    Java实现矩阵相乘问题
  • 原文地址:https://www.cnblogs.com/sideny/p/3286471.html
Copyright © 2011-2022 走看看