【C++】【命名规范】你的代码风格是哪种?(驼峰命名法、下划线命名法、帕斯卡命名法、常量命名法等)
前言:
在 C/C++ 中,类名、接口名、变量名和函数名等的命名规则是比较自由的,开发者可以根据自己的喜好选择合适的命名方式。但是,为了保持代码的可读性和可维护性,我们通常遵守一些命名规则。
例如驼峰命名法、下划线命名法、帕斯卡命名法、常量命名法等,此外本文末尾还延申了一些常见的代码书写风格(例如{}),以及两个对代码执行有影响的编程习惯(采用const type &,采用NULL=p)。
一、常见的命名法
1.驼峰法命名法
驼峰法是一种较为常见的变量名和函数名命名规则,其命名方式是将每个单词的首字母大写,其他字母小写(第一个单词首字母小写)。例如:
int myNumber;
void doSomething();
这是一种可读性较高的命名方式,使得变量名和函数名清晰易懂。
2.下划线命名法
下划线命名法是一种将单词用下划线 _
分隔的命名方式。它可以增加变量名和函数名的可读性,特别是在变量名和函数名比较长时,更容易让人理解。例如:
int my_number;
void do_something();
3.帕斯卡命名法
帕斯卡命名法是一种把每个单词的首字母都大写的命名方式。它与驼峰命名法相似,不同之处在于,帕斯卡命名法中每个单词都必须大写。例如:
class MyClassName {
// ...
};
class MyInterfaceName {
virtual void doSomething() = 0;
};
4.匈牙利命名法
匈牙利命名法以数据类型作为前缀,后跟描述变量用途的单词。例如:
int iCount;
float fPrice;
char cFirstChar;
这种命名方式可读性较强,但随着代码的复杂性增加,命名长度会大大增加。
5.短划线命名法(不建议使用)
短划线命名法和下划线命名法类似,只不过是使用短划线 -
代替了下划线 _
。
let first-name = "John";
let last-name = "Doe";
请注意,使用短划线命名法有时也会导致代码的可读性降低,因为它在一些语言和环境中被用作减号的语法符号。因此,在选择命名规范时,需要考虑到其可读性和可理解性,以及特定语言和环境的习惯和规范。
6.全部大写字母命名法
这种命名方式是将整个名称都用大写字母表示,例如:
MY_VARIABLE = "some value"
# 使用全部大写字母来表示一个变量名,但这不是常量
MY_LIST = [1, 2, 3]
# 使用全部大写字母来表示一个列表变量名
7.常量命名法
全部大写字母命名法和常量命名法本质上是相同的,都是将标识符的每个字母都转换为大写字母来表示常量。在常量命名时,也可以采用上述两种命名方式中的一种,例如:
const int MAX_NUMBER = 100;
const double PI = 3.1415926;
无论采用哪种命名方式,命名都应该表意明确、易读易懂,有助于提高代码的可读性和可维护性。在编写代码时,应该遵循命名规则,保持代码的一致性和整洁性。
二、在C/C++中的习惯使用
1.类名和接口名
在 C++ 中,类名和接口名应当清晰明了、易读易懂,通常采用帕斯卡命名法。因为类名和接口名是代码中的重要组成部分,它们代表着特定的对象或概念,应该使用名词或动词+名词等形式来描述。例如:
class MyClassName {
// ...
};
class MyInterfaceName {
virtual void doSomething() = 0;
};
需要注意的是,类名和接口名应当尽量简洁,并描述清晰明了的概念,同时避免使用过长的名称。此外,为了保持命名的一致性,类名和接口名也可以采用其他命名方式,例如驼峰命名法或下划线命名法。
2.函数名
在 C++ 中,函数名应该清晰明了、易读易懂,通常采用驼峰命名法或下划线命名法。
驼峰命名法的命名规则是将每个单词的首字母大写。例如:
void myFunction();
void doSomethingWithData();
下划线命名法的命名规则是将单词之间用下划线 _
连接。例如:
void my_function();
void do_something_with_data();
需要注意的是,无论采用哪种命名方式,函数名应该清晰明了、易读易懂,可以用动词或名词等形式表示函数的功能。同时,函数名也应该符合代码的命名规范和风格,保持命名的一致性。
3.变量名
在 C++ 中,变量名应该清晰明了、易读易懂,通常采用驼峰命名法或下划线命名法。
驼峰命名法的命名规则是将每个单词的首字母大写。例如:
int myVariable;
float myFloatVariable;
下划线命名法的命名规则是将单词之间用下划线 _
连接。例如:
int my_variable;
float my_float_variable;
需要注意的是,无论采用哪种命名方式,变量名应该清晰明了、易读易懂,可以用名词或形容词等形式表示变量的含义和作用。同时,变量名也应该符合代码的命名规范和风格,保持命名的一致性。
4.枚举命名
使用帕斯卡命名法,命名枚举名;使用常量命名法,命名枚举值。
以下是一些枚举命名的例子:
enum DayOfWeek { // 一周的日
SUNDAY,
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY
};
三、推荐、扩展和延申
推荐代码风格展示:
- 类名/接口名采用帕斯卡命名方式;
- 函数名采用驼峰命名方式;
- 变量名采用下划线命名方式;
- 常量采用常量命名方式
class MyClass { // 类名使用帕斯卡命名法
public:
void myFunction(); // 函数名使用驼峰式命名法
private:
int my_variable; // 变量名使用下划线命名法
const int MY_CONSTANT = 100; // 常量名使用全大写字母,单词间使用下划线分隔
};
其实,个人觉得只要自己习惯(能见名知意)就好,没有说一定非用哪一种;不过不建议出现这种情况,风格经常变动(其实就是乱写,例如一个程序里函数名命名出现好几种不同的风格)。
扩展:
观察下面两种风格的代码,注意区别{}的使用。
代码1:
if (something_is_true)
{
// do something
}
else
{
// do something else
}
代码2:
if (something_is_true) {
// do something
} else {
// do something else
}
思考:看看你更喜欢用哪一款?(还是一样,不建议混用!)
延申:
以上都是风格问题,其实本质并不对代码执行造成影响(影响的只是人的心情,尤其是看别人的代码)。下面延申两个案例,这里不仅仅是代码风格的问题,也可能会影响程序的执行结果。
案例1:
在传递参数时加上const,防止误修改原先值。
void process_string(const string &str) {
cout << "The length of the string is: " << str.length() << endl;
}
在函数中使用 const string &
参数能够提高程序的效率和性能,但是不能修改输入的字符串,因为该参数是以引用的方式传递的。
案例2:
在C语言中有种编码习惯是比较表达式把常量放在前面,这样如果你把 == 写成了 = (赋值操作符),编译器就会报错。
int *p = NULL;
if (p == NULL) {
printf("p is null\n");
}
// 或者用 Yoda 表达式
if (NULL == p) {
printf("p is null\n");
}
当然,在使用 C++11 及以上版本中,推荐使用 nullptr 关键字来代替 NULL 指针常量。(C++11及以上,可不用关注该习惯。)
总结:
本文主要分享了一些常见的命名风格习惯(例如驼峰命名法、下划线命名法、帕斯卡命名法、常量命名法等),向读者推荐了C/C++中类名、接口名、函数名、变量名和常量的常见命名风格,以及扩展了一些常见的代码书写风格(例如{}),最后延申了两个对代码执行有影响的编程习惯。
希望本文能给各位读者带来些许帮助,同时也欢迎热心的码友提供自己的见解分享在评论区!
更多推荐
所有评论(0)