编程总是浪费时间考虑变量名。
第三章命名规则
众所周知的命名规则应该是基于微软的“匈牙利”方法。这个命名规则的主要思想是
给变量和函数名加上前缀,以提高人们对程序的理解。例如,所有字符变量都以ch开头。
是前缀,如果是指针变量,则追加前缀p。如果变量以ppch开头,则表明它是一个指向字符。
指针的指针。
“匈牙利”法最大的缺点就是繁琐,比如
int i,j,k;
浮点x,y,z;
如果采用“匈牙利”的命名规则,应写成如下
int iI,iJ,ik;//前缀I表示int类型。
浮点fX,fY,fZ;//前缀f表示浮点类型。
如此繁琐的程序,会让大部分程序员无法忍受。
据调查,并没有一个所有程序员都能认同的命名规则,编程教材一般也不会参考。
设置命名规则。命名规则对于软件产品来说并不是一个“成败”的问题,不要花费太多精力。
试图发明世界上最好的命名规则,我们应该制定一个让大多数项目成员满意的命名规则。
并在项目中实现。
3.1 ***性规则
本节讨论的* * *性规则是大多数程序员都采用的,我们之前也应该遵循这些* * *性规则。
接下来,展开具体的规则,比如3.2节。
规则3-1-1标识符应该是直观的、拼写可读的,并且期望不用“解码”就能理解意思。
最好使用英语单词或其组合,便于记忆和阅读。千万不要用汉语拼音来命名。
节目中的英文单词一般不会太复杂,用词要准确。例如,不要将当前值写成
现在价值.
规则3-1-2标识符的长度应符合“最小长度”的要求。最大信息量”原则。
几十年前,旧的ANSI C规定名字不能超过6个字符,但是今天的C++/C已经没有这个限制了。一个
一般来说,长名字更能表达意思,所以函数名、变量名、类名长度超过十个字符是不够的。
奇怪。所以名字越长越好?不一定!例如,变量名maxval比maxValueUntilOverflow更好
好用。单字符的名字也很有用,比如I,j,k,m,n,x,y,z等。它们通常可以用作函数。
中的局部变量。
规则3-1-3命名规则应与所采用的操作系统或开发工具的风格保持一致。
比如Windows应用的标识符通常是大小写混合的,比如AddChild。但是
Unix应用程序标识符通常用小写下划线,如add_child。不要把这两种风格混在一起。
规则3-1-4仅通过大小写区分的类似标识符不应出现在程序中。
例如:
int x,X;//变量X和X很容易混淆。
void foo(int x);//函数foo和FOO容易混淆。
void FOO(float x);
规则3-1-5在程序中没有标识符相同的局部变量和全局变量,尽管它们都是
范围不一样没有语法错误,但是会有误导。
规则3-1-6变量名应使用“名词”或“形容词+名词”。
例如:
浮点值;
float旧值;
浮点新值;
规则3-1-7全局函数的名字应该用“动词”或者“动词+名词”(动宾短语)。
一个类的成员函数应该只用“动词”,省略的名词就是对象本身。
例如:
DrawBox();//全局函数
框->;draw();//类的成员函数
规则3-1-8用正确的反义词命名具有互斥意义的变量或具有相反作用的函数。
例如:
int minValue
int maxValue
int SetValue(…);
int GetValue(…);
建议3-1-1:名称中尽量避免数字,如Value1、Value2等。,除非合乎逻辑。
你真的需要一个数字。这是为了防止程序员偷懒,不肯为命名动脑,导致名字毫无意义。
单词(因为用数字编号最简单)。
3.2简单的Windows应用程序命名规则
笔者对“匈牙利”的命名规则进行了合理的简化,以下命名规则简单易用且适用。
Windows应用软件的开发。
规则3-2-1类名和函数名由以大写字母开头的单词组成。
例如:
类节点;//类名
类LeafNode//类名
void Draw(无效);//函数名
void SetValue(int value);//函数名
规则3-2-2变量和参数由以小写字母开头的单词组成。
例如:
布尔标志;
int drawMode
规则3-2-3常量都是大写字母,单词之间用下划线隔开。
例如:
const int MAX = 100;
const int MAX _ LENGTH = 100;
规则3-2-4静态变量以s_(表示静态)为前缀。
例如:
无效初始化(…)
{
static int s _ initValue//静态变量
…
}
规则3-2-5如果你需要一个全局变量,在它前面加上g_(代表全局)。
例如:
int g _ howManyPeople//全局变量
int g _ howMuchMoney//全局变量
规则3-2-6类的数据成员以m_(表示成员)为前缀,这样可以避免数据成员和
成员函数的参数同名。
例如:
void Object::SetValue(int width,int height)
{
m_width =宽度;
m_height =高度;
}
规则3-2-7为了防止软件库中的某些标识符与其他软件库冲突,您可以
各种标识符都有前缀,以反映软件的性质。比如三维图形标准OpenGL的所有库函数。
都是以gl开头,所有常量(或者宏定义)都是以GL开头。
——摘自芮林的高质量C++/C编程指南。
建议你有空的时候看看原著。
绝对让你受益匪浅。