原文链接:1.8 — Whitespace and basic formatting
声明:
- 本文旨在方便了解学习C++语法,切勿用于任何商业用途。
- 由于本人英语水平有限,文章中可能存在语义错误,如有疑问请参照原文,也可以在评论区指出错误。
空格是一个术语,指的是用于格式化目的的字符。在C++中,这主要指空格、制表符和换行符。C++编译器通常忽略空格,但有一些小的例外(处理文本文本时)。出于这个原因,我们说C++是一种与空格无关的语言。
因此,以下语句都执行完全相同的操作:
std::cout << "Hello world!";
std::cout << "Hello world!";
std::cout << "Hello world!";
std::cout
<< "Hello world!";
即使是分成两行的最后一条语句也能很好地编译。
以下函数都执行相同的操作:
int add(int x, int y) { return x + y; }
int add(int x, int y) {
return x + y; }
int add(int x, int y)
{ return x + y; }
int add(int x, int y)
{
return x + y;
}
C++编译器确实注意空格的一个例外是在引用的文本中,例如 "Hello world!"
"Hello world!"
不同于:
"Hello world!"
每个打印都完全符合您的预期。
引用文本中不允许换行:
std::cout << "Hello
world!"; // Not allowed!
由空格(空格、制表符或换行符)分隔的引用文本将被连接起来:
std::cout << "Hello "
"world!"; // prints "Hello world!"
C++编译器注意空格的另一个例外是带有 // 注释。单行注释仅持续到行尾。因此,做这样的事情会给你带来麻烦:
std::cout << "Hello world!"; // Here is a single-line comment
this is not part of the comment
与其他一些语言不同,C++ 不会对程序员强制实施任何类型的格式限制(记住,相信程序员!)。多年来,已经开发了许多不同的格式化C++程序的方法,您会发现哪些方法最好。我们的基本经验法则是,最好的样式是产生最具可读性的代码并提供最大一致性的样式。
以下是我们对基本格式的建议:
无论哪种方式,我们都建议您将制表符设置为 4 个缩进空格。一些 IDE 默认为 3 个缩进空格,这也很好。
Google C++ 样式指南建议将左大括号与语句放在同一行:
int main() {
}
这样做的理由是它减少了垂直空格的数量(您不会将整行用于仅左大括号),因此您可以在屏幕上容纳更多代码。屏幕上的更多代码使程序更易于理解。
但是,我们更喜欢常见的替代方案,其中左大括号出现在其自己的行上:
int main()
{
}
这增强了可读性,并且不易出错,因为您的大括号对应始终在同一级别缩进。如果由于大括号不匹配而出现编译器错误,则很容易看到位置。
int main()
{
std::cout << "Hello world!\n"; // tabbed in one tab (4 spaces)
std::cout << "Nice to meet you.\n"; // tabbed in one tab (4 spaces)
}
int main()
{
std::cout << "This is a really, really, really, really, really, really, really, "
"really long line\n"; // one extra indentation for continuation line
std::cout << "This is another really, really, really, really, really, really, really, "
"really long line\n"; // text aligned with the previous line for continuation line
std::cout << "This one is short\n";
}
这使您的行更易于阅读。在现代宽屏显示器上,它还允许您并排放置两个具有相似代码的窗口,并更轻松地比较它们。
std::cout << 3 + 4
+ 5 + 6
* 7 * 8;
这有助于更清楚地表明后续行是前几行的延续,并允许您对齐左侧的运算符,从而更易于阅读。
cost = 57;
pricePerItem = 24;
value = 5;
numberOfItems = 17;
更易于阅读:
cost = 57;
pricePerItem = 24;
value = 5;
numberOfItems = 17;
更难阅读:
std::cout << "Hello world!\n"; // cout lives in the iostream library
std::cout << "It is very nice to meet you!\n"; // these comments make the code hard to read
std::cout << "Yeah!\n"; // especially when lines are different lengths
更易于阅读:
std::cout << "Hello world!\n"; // cout lives in the iostream library
std::cout << "It is very nice to meet you!\n"; // these comments are easier to read
std::cout << "Yeah!\n"; // especially when all lined up
更难阅读:
// cout lives in the iostream library
std::cout << "Hello world!\n";
// these comments make the code hard to read
std::cout << "It is very nice to meet you!\n";
// especially when all bunched together
std::cout << "Yeah!\n";
更易于阅读:
// cout lives in the iostream library
std::cout << "Hello world!\n";
// these comments are easier to read
std::cout << "It is very nice to meet you!\n";
// when separated by whitespace
std::cout << "Yeah!\n";
我们将在本教程中遵循这些约定,它们将成为您的第二天性。当我们向您介绍新主题时,我们将介绍与这些功能相关的新样式建议。
最终,C++让你有能力选择你最舒服或认为最好的风格。但是,我们强烈建议您使用我们在示例中使用的相同样式。它已经过数千名程序员在数十亿行代码中的实战测试,并针对成功进行了优化。一个例外:如果你在别人的代码库中工作,采用他们的风格。最好支持一致性而不是您的偏好。
大多数现代 IDE 将帮助您在键入代码时设置代码的格式(例如,当您创建函数时,IDE 将自动缩进函数体内的语句)。
但是,在添加或删除代码、更改 IDE 的默认格式或粘贴具有不同格式的代码块时,格式可能会弄乱。修复部分或全部文件的格式可能会令人头疼。幸运的是,现代 IDE 通常包含自动格式化功能,该功能将重新格式化所选内容(用鼠标突出显示)或整个文件。