C++ 自学教程 第1.4c章
前言:这一章节介绍怎么给你的函数或者变量起~名~字~ 我也是一开始就爱用些abcd,x,y,z之类的简单名,但真的过两天就忘记哪个是什么意思了。当然一开始学习的时候编写的程序都比较简单,但是真的开始做项目的时候就知道这种做法多不利于可持续性发展,下文给出了几个常用的命名传统,不遵守不会报错,但遵守受益无穷。阅读愉快。
关键词
C++保留了一个包含84个词集用作个用。这些词被叫做关键词(或者保留词),而且他们都有独特的意思C++。
下面是所有C++的关键词:
*这15个词是在C++98引入的。有些老的参考书可能不包含这些。
** 这10个词是在C++11被加进来的,所以如果你的编译器不兼容C++11,这些关键词可能不能用。
C++11还添加了两个特殊标识符:override 和 final。这些词在一些文本内有特殊意思。
你已经遇见了不少关键词,包括int, void, 和 return。与其他运算符号一起,这些关键词和特别的标识符确定了整个C++语言(不包括预处理命令)。因为这些关键词和标识符有特别的意思,你的IDE将会自动改变这些词语的颜色使得他们更容易被看见。
当你看完了这系列的教程,你将能够理解大部份的关键词哦!
标识符命名规则
变量,函数,类型,或者其他C++对象的名字也被叫做标识符(identifier)。C++给予了用户很大的灵活性来起自己喜欢的名字。但是,命名标识符还是要遵从一定的规则:
• 标识符不可以跟关键词同名。关键词被预留了。
• 标识符的名字只能包含字母,数字,和下划线。这也就是说标识符的名字里不能包含除了下划线以外的符号,或者是空格。
• 标识符的名字必须以字母(大小写都可)或者是下划线开头。不能以数字打头。
• 同字母的大小写不一样。nvalue和nValue代表不同对象。
现在,你知道了能够怎样一个变量命名,下面谈谈你应该怎么给变量或者函数命名。
首先,C++有个不成文的传统:变量名以小写字母打头。如果变量名是一个单词,整个名字都应该用小写字母。
int value; // correct
int Value; // incorrect (should start with lower case letter)
int VALUE; // incorrect (should start with lower case letter)
int VaLuE; // incorrect (see your psychiatrist) ;)
总体来说,函数也以小写字母开头。虽然可能有些不同意见,但是为了保持一致我们这里都用小写。比如主函数main和其他C++标准库里的函数名都是小写。
以大写字母开头的标识符名字通常用在结构,类,和枚举(之后会讲到)。
如果一个变量或函数包含一个以上的单词,有以下两条习惯:使用下划线分隔,或者间断性大写分隔(Fun fact: 也被称为骆驼大写CamelCase,因为突出的大写字母就像骆驼的驼峰一样)。
int my_variable_name; // correct (separated by underscores)
void my_function_name() // correct (separated by underscores)
int myVariableName; // correct (intercapped/CamelCase)
void myFunctionName(); // correct (intercapped/CamelCase)
int my variable name; // invalid (whitespace not allowed)
void my function name(); // invalid (whitespace not allowed)
int MyVariableName; // valid but incorrect (should start with lower case letter)
void MyFunctionName(); // valid but not best practice
在这个教程里面,我们通常会使用间隔大写字母间隔的命名法,这样读起来简便些。不过其实这两种命名法都很常见———C++标准库就常在变量名和函数名里使用下划线。有时候你还可能看到两种混用的:变量名用下划线,函数名用大写间隔。
值得一提的一点是,如果你在用别人的代码,通常公认最好要延用原本代码的命名风格。
其次,你应该避免起名时使用下划线开头,由于通常情况下这些名字被OS,库,或者编译器留用。
第三,这也可能是最重要的一点,让这个名字确实地的描述你的标识符是什么。没有经验的程序员通常会把名字起得越短越好,觉得这样能节省时间或者觉得其意义简单明了。但是,这样的想法几乎总是错的。理想情况下,变量的名字应该能帮助完全没看过你的代码的人尽快理解你的代码。三个月后,当你在看你之前写的代码,你将会忘记这段代码是怎么运作的。你会对好好起名的自己感激涕零。当变量所在的代码越复杂,它名字的意思应该越明确。
int ccount; //不好,没人知道ccount是什么
int customerCount; //好,很明显我们在计算什么
int i; //不好*,除非用再简单或者临时情况下,比如说循环变量里。
int index; //不一定,主要看上下文
int totalScore; //好,描述性强
*注意,在琐碎/不重要的地方使用简单的变量名是可以的,比如说循环变量,或者简单数学方程里。
第四,一个说明性的注释也很有用。比方说,如果你定义了一个变量叫做:numberOfChars,用来存贮一段文本里的字符数量。“Hello World!” 里有几个字符呢?10个,11, 还是12个呢?这取决于我们是否计算空格,符号。与其把它命名为超长的:numberOfCharsIncludingWhitespaceAndPunctuation(包括空格和符号的字符数)的,不如在后面加一行注释便于大家理解。
// holds number of chars in a piece of text -- including whitespace and punctuation!
// 包含文本里所有符号的数目,包括空格和符号!
int numberOfChars;
小测试:
挑出哪个变量的名字不符合规范,并解释为什么。
1) int sum;
2) int _apples;
3) int VALUE;
4) int my variable name;
5) int TotalCustomers;
6) int void;
7) int numFruit;
8) int 3some;
9) int meters_of_pipe;
答
案
在
下
面
:
2) 变量名不应该以下划线开头
3变量名应该以小写字母开头
4) 变量名不应该包含空格.
5) 变量名应该以小写字母开头
6) void 是个关键词.
8) 变量的名字不应该用数字打头.
说明: 本教程基于网上一个英文教程LearnCPP