在csdn上有很多关于命名规范的文档.
也看过有人抨击匈牙利表示法,抨击的人说的太绝对了.
对于内建类型使用匈牙利表示法命名变量,有积极意义. 合理的使用命名规范, 有利于程序的编码和调试
对于所有变量,都用命名规范,太教条.
看资料, MS的一个程序员提议使用匈牙利表示法, 被MS接受.
MS的代码中,也不完全遵守命名规范. 代码中有很多变量不采用命名规范.
例如:
FLT answer;
double tmp; //?
unsigned int flags;
REG1 wchar_t *ptr = (wchar_t *) nptr;
char * cptr;
int retval, len;
int clen = 0;
同一代码.cpp, 命名规范也不相同。这和多人维护,每个人的风格不同有关系。
例如:
typedef struct {
JET_COLUMNID columnid;
const void _far *pvData;
unsigned long cbData; //?
JET_GRBIT grbit;
unsigned long ibLongValue;
unsigned long itagSequence;
JET_ERR err;
} JET_SETCOLUMN;
INT cbData, 我倒. 这也许是原来的变量是BYTE, 后来变量长度不够,直接改成了INT, 但是变量名没改,导致的。
BOOL fxx, 这个理解不了. MS认为 BOOL 是flag的意思. 那float咋弄呢?
匈牙利命名的反对者,觉得附加的变量类型信息, 当变量类型改变后, 变量名称要全部修改,引起的麻烦.
VsIde或别的IDE都有字符串完整搜索,全部替换功能,这不是反对的理由.
每个人的命名规范都有不同,虽然都是从一个公认的命名规范中来的。
每个人都有自己的看法, 要不维护别人代码的时候,都有皱眉头的时候.
变量命名规范的合理使用,能提高编码效率. 最少自己工作的时候轻松些.
我自己用的内建类型命名规范整理如下:
类型 变量前缀 举例
BOOL b bRunning;
CHAR c或ch cXorSum
数组
//MS代码中CHAR[], BYTE[], 都用sz. 原本约定'/0'结尾的缓冲区才是sz, '/0'结尾的都是CHAR[]
CHAR[] sz szMsg[0x100]
BYTE[] sz szBuf[0x100]; //还是用sz容易辨别
指针
PCHAR pc pcBuf
PBYTE puc pucBuf
INT i 或 n nLenBuf
ULONG ul ulLen
DWORD dw dwLen
float f fSum
double db dbSum
STRUCT tag tagPersonalInfo
LARGE_INTEGER liBigInt
类成员变量 m_ m_dwLenName
1369

被折叠的 条评论
为什么被折叠?



