【Learncpp中文翻译版】【1.7 — 关键字和命名标识符】

原文链接:1.7 — Keywords and naming identifiers

声明:

  • 本文旨在方便了解学习C++语法,切勿用于任何商业用途。
  • 由于本人英语水平有限,文章中可能存在语义错误,如有疑问请参照原文,也可以在评论区指出错误。

1.7 — 关键字和命名标识符

关键词

C++ 保留一组 92 个字(从 C++20 开始)供自己使用。这些词称为关键字(或保留字),每个关键字在 C++ 语言中都有特殊含义。

以下是所有 C++ 关键字的列表(通过 C++20):

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AW1KsqYZ-1659805165570)(.\image\1.7.1.png)]

标记为 (C++20) 的关键字是在 C++20 中添加的。如果您的编译器不符合 C++20(或确实具有 C++20 功能,但默认情况下已关闭),则这些关键字可能不起作用。

C++ 还定义了特殊标识符:override、final、import和module。这些在某些上下文中使用时具有特定含义,但不是保留的。

您已经遇到过其中一些关键字,包括int和return。连同一组运算符,这些关键字和特殊标识符定义了整个 C++ 语言(不包括预处理器命令)。因为关键字和特殊标识符具有特殊含义,您的 IDE 可能会更改这些单词的文本颜色,以使它们从其他标识符中脱颖而出。

当您完成本教程系列时,您将了解几乎所有这些词的作用!


标识符命名规则

提醒一下,变量(或函数、类型或其他类型的项)的名称称为标识符。C++ 为您提供了很大的灵活性来根据需要命名标识符。但是,在命名标识符时必须遵循一些规则:

  • 标识符不能是关键字。保留关键字。
  • 标识符只能由字母(小写或大写)、数字和下划线字符组成。这意味着名称不能包含符号(下划线除外)或空格(空格或制表符)。
  • 标识符必须以字母(小写或大写)或下划线开头。它不能以数字开头。
  • C++ 区分大小写,因此区分大小写字母。nvalue不同于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++ 标准库中的所有函数也是如此。

以大写字母开头的标识符名称通常用于用户定义的类型(例如结构、类和枚举,所有这些我们将在后面介绍)。

如果变量或函数名称是多字的,则有两种常见的约定:用下划线分隔的单词,称为snake_case,或intercapped(有时称为camelCase,因为大写字母像骆驼上的驼峰一样竖起)。

int my_variable_name; // correct (separated by underscores/snake_case)
int my_function_name(); // correct (separated by underscores/snake_case)

int myVariableName; // correct (intercapped/CamelCase)
int myFunctionName(); // correct (intercapped/CamelCase)

int my variable name; // invalid (whitespace not allowed)
int my function name(); // invalid (whitespace not allowed)

int MyVariableName; // valid but incorrect (should start with lower case letter)
int MyFunctionName(); // valid but incorrect (should start with lower case letter)

在本教程中,我们通常会使用 intercapped 方法,因为它更易于阅读(在密集的代码块中很容易将下划线误认为是空格)。但也很常见 —— C++ 标准库对变量和函数都使用下划线方法。有时您会看到两者的混合:用于变量的下划线和用于函数的 intercaps。

值得注意的是,如果您正在使用其他人的代码,通常认为匹配您正在使用的代码的样式比严格遵循上面列出的命名约定更好。

最佳实践

在现有程序中工作时,请使用该程序的约定(即使它们不符合现代最佳实践)。在编写新程序时使用现代最佳实践。

其次,您应该避免以下划线开头命名您的标识符,因为这些名称通常是为操作系统、库和/或编译器使用而保留的。

第三,你的标识符应该清楚他们持有的价值是什么意思(特别是如果单位不明显)。标识符的命名方式应该能够帮助那些不知道你的代码是什么的人能够尽快地弄清楚它。3 个月后,当你再次查看你的程序时,你会忘记它是如何工作的,你会感谢自己选择了有意义的变量名。

然而,给一个微不足道的变量一个过于复杂的名字会阻碍对程序正在做什么的整体理解,几乎就像给一个广泛使用的标识符一个不恰当的名字一样。因此,一个好的经验法则是使标识符的长度与它的使用范围成正比。一个不常用的标识符可以有一个短名称(例如i)。使用更广泛的标识符(例如,从程序中的许多不同位置调用的函数)应该具有更长且更具描述性的名称(例如,代替open,尝试openFileOnDisk

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-seoQ1EHD-1659805165572)(image/1.7.2.png)]

在任何情况下,避免使用缩写。尽管它们减少了您编写代码所需的时间,但它们使您的代码更难阅读。即使缩写是明确的,读者也需要一点时间才能弄清楚你的意思。代码的阅读次数多于编写次数,您在编写代码时节省的时间是每个读者(包括未来的您)在阅读代码时浪费的时间。如果您希望更快地编写代码,请使用编辑器的自动完成功能。

最后,澄清性评论可以大有帮助。例如,假设我们声明了一个名为numberOfChars的变量,它应该存储一段文本中的字符数。文本“Hello World!” 有 10、11 或 12 个字符?这取决于我们是否包含空格或标点符号。与其命名变量numberOfCharsIncludingWhitespaceAndPunctuation,这相当冗长,不如在声明行中放置好注释来帮助用户弄清楚:

// holds number of chars in a piece of text -- including whitespace and punctuation!
int numberOfChars;

Quiz time

问题 #1

根据您应该如何命名变量,指出每个变量名称是否正确(遵循约定)、不正确(不遵循约定)或无效(不会编译),以及原因。

int sum {}; // 假设很明显我们在求和

正确。

int _apples {};

不正确——变量名不应以下划线开头。

int VALUE {};

不正确——变量名应该以小写字母开头。

int my variable name {};

不正确——变量名不能包含空格。

int TotalCustomers {};

不正确——变量名应该以小写字母开头。

int void {};

不正确——void 是关键字。

int numFruit {};

正确。

int 3some {};

不正确——变量名不能以数字开头。

int meters_of_pipe {};

t void {};`

不正确——void 是关键字。

int numFruit {};

正确。

int 3some {};

不正确——变量名不能以数字开头。

int meters_of_pipe {};

正确。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值