C++ 中的命名约定
命名文件或变量是程序员编写干净代码所采取的第一步也是非常基本的步骤,其中命名必须适当,以便任何其他程序员可以轻松地阅读代码。在 C++ 中,命名约定是为 C++ 程序中的变量和函数选择有效名称的一组规则。
- 类名应该是名词。
- 使用大写字母作为单词分隔符,类名中其余单词的小写字母。
- 类名中的第一个字符必须大写。
- 类名中不允许使用下划线 ('_')。
- 类中的私有属性名称应以字符“m”开头。
- 在前面加上“m”之后,名称将遵循与类名相同的规则。
- 字符“m”也位于其他名称修饰符之前。例如,“p”表示指针。
- 每个方法/函数名称都应该以动词开头。
- 函数/方法参数名称的第一个字符应为小写。在第一个字母之后开始的所有单词都应该是带有类名的大写字母。
- 变量名应以字母开头。
- 数字可以用在变量名中,但只能在字母之后。
- 除下划线('_')外,不能在变量名中使用特殊符号。
- 变量名不能使用关键字。
- 指针变量 应该以'p'开头,并将星号'*'靠近变量名而不是指针类型。
- 引用变量应以“r”开头。这有助于区分返回可修改对象的方法和返回不可修改对象的相同方法。
- 静态变量应以's'开头。
- 全局常量应全部为大写字母,并用“_”分隔。
- 除下划线 ('_') 和破折号 ('-') 外,文件名中不允许出现特殊字符。
- 文件名应以 .cc 扩展名结尾或应以 .cpp 扩展名结尾。
- 不要使用 /user/include 中已经存在的文件名。或任何预定义的头文件名。
例子:
Calculate the product of two variables-
Name variable 1 as var1
Name variable 2 as var2
Name result as product or pdt
This will be more convenient naming convention than assuming the random names like x, y, and z.
命名约定的优点:
在编写代码时遵循一组命名约定规则有助于以下方式 -
- 避免命名冲突。
- 在出现歧义的情况下提高代码的清晰度。
- 有助于形成和促进团队内部的一致性。
- 提高对代码的理解和可读性。
插图:
- 类:用 C++ 命名一个类,并使用大写字母作为单词分隔符。类名应该是名词。例如,ReverseString、Multiply2Numbers。名称应该是具体的,并暗示类的功能,而无需看类的主体。
- 方法:每个方法和函数都执行一个动作,因此函数名称应该清楚地说明它的作用。例如,WriteDataToFile() 是比 WriteFile() 更方便的名称。函数名称应以动词开头。
- 常量:常量应全部为大写字母,并带有“_”分隔符。例如,MAX_INT、TWO_PI 等。
C++ 中的命名约定
程序中的名称是程序可读性的关键。如果名称在程序中合适,那么所有内容都可以组合在一起并且关系清晰,含义是可推导出的。 C++使用 CamelCase 作为编写方法、变量、类、包和常量名称的习惯。
CamelCase is a naming convention where a name is formed of multiple words that are joined together as a single word with the first letter of each of the word capitalized.
以下是 C++ 编程的命名约定。在用 C++ 编写代码时必须遵循它们,以便良好的维护、可读性和对程序的理解。
类型 1:类和类属性名称
- 类名应该是名词。
- 使用大写字母作为单词分隔符,小写字母作为单词的其余部分。
- 类名中的第一个字符必须大写。
- 类名中不允许使用下划线 ('_')。
class PerimeterRectangle
class FingerprintScanner
- 类中的私有属性名称应以字符“m”开头。
- 在前面加上“m”之后,名称将遵循与类名相同的规则。
- 字符“m”也位于其他名称修饰符之前。例如,“p”表示指针。
class PerimeterRectangle
{
public:
int perimeter;
private:
int mLength;
int mWidth;
}
类型 2:函数和函数参数名称
通常,C++ 中的每个函数都执行一个或多个动作,因此函数的名称应该清楚地暗示它的作用。每个方法/函数名称都应该以动词开头。
- 后缀有时很有用。例如,
- 计数- 计数器的当前计数。
- Key -键值。
- 前缀有时很有用。例如,
- 获得价值。
- 设定值。
使用与类名相同的名称约定。
int getValue();
int SolveEquation();
函数/方法参数名称的第一个字符应为小写。在第一个字母之后开始的所有单词都应该是带有类名的大写字母。
int PerimeterRectangle(int lengthRectangle, int widthRectangle)
类型 3:变量
当使用new关键字动态声明变量或将变量声明为类属性时,它们会从堆中获取内存,当在 C++ 程序中创建变量时,会从程序堆栈中分配内存。
- 变量名应以字母开头。
- 可以使用数字,但只能在字母之后使用。
- 除下划线('_')外,不能在变量名中使用特殊符号。
- 变量名不能使用关键字。
int total_cost;
int length;
指针变量应以“p”开头,并将星号“*”靠近变量名称而不是指针类型。
int *pName;
int *pAge, address; // Here only pAge is a pointer variable
引用变量应以“r”开头。这有助于区分返回可修改对象的方法和返回不可修改对象的相同方法。
静态变量应以's'开头。
static int sCount;
类型 4:常数
全局常量应全部为大写字母,并用“_”分隔。
const double TWO_PI = 6.28318531;
类型 5:文件命名;
- 除下划线 ('_') 和破折号 ('-') 外,文件名中不允许出现特殊字符。
- 文件名应以 .cc 扩展名结尾或应以 .cpp 扩展名结尾。
- 不要使用 /user/include 中已经存在的文件名。或任何预定义的头文件名。
helloworld.cc // Valid
hello_world.cpp // Valid
hello-world.cpp // Valid
hel-lo_world.cpp // Valid
hello* world.cpp // Not Valid
iostream.cpp // Not Valid