【Learncpp中文翻译版】【1.8 — 空格和基本格式】

原文链接: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++程序的方法,您会发现哪些方法最好。我们的基本经验法则是,最好的样式是产生最具可读性的代码并提供最大一致性的样式。

以下是我们对基本格式的建议:

  1. 可以使用制表符或空格进行缩进(大多数 IDE 都有一个设置,您可以在其中将按制表符转换为适当数量的空格)。喜欢空格的开发人员倾向于这样做,因为它使格式自描述 - 无论编辑器如何,使用空格间隔的代码将始终看起来正确。使用制表符的支持者想知道为什么您不使用旨在对缩进进行缩进的字符,特别是因为您可以将宽度设置为您的偏好。这里没有正确的答案 - 辩论它就像争论蛋糕和馅饼更好。这最终归结为个人喜好。

无论哪种方式,我们都建议您将制表符设置为 4 个缩进空格。一些 IDE 默认为 3 个缩进空格,这也很好。

  1. 函数大括号有两种可接受的样式。

Google C++ 样式指南建议将左大括号与语句放在同一行:

int main() {
}

这样做的理由是它减少了垂直空格的数量(您不会将整行用于仅左大括号),因此您可以在屏幕上容纳更多代码。屏幕上的更多代码使程序更易于理解。

但是,我们更喜欢常见的替代方案,其中左大括号出现在其自己的行上:

int main()
{
}

这增强了可读性,并且不易出错,因为您的大括号对应始终在同一级别缩进。如果由于大括号不匹配而出现编译器错误,则很容易看到位置。

  1. 大括号中的每个语句都应从其所属函数的左大括号开始一个制表符。例如:
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)
}
  1. 线条不应太长。通常,80 个字符是一行的最大长度。如果一条线要更长,则应将其(在合理的位置)分成多条线。这可以通过使用额外的制表符缩进每个后续行来完成,或者如果行相似,则通过将其与上面的行对齐(以更易于阅读者为准)。
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";
}

这使您的行更易于阅读。在现代宽屏显示器上,它还允许您并排放置两个具有相似代码的窗口,并更轻松地比较它们。

  1. 如果用运算符(例如 << 或 +)拆分长行,则应将运算符放在下一行的开头,而不是当前行的末尾
std::cout << 3 + 4
    + 5 + 6
    * 7 * 8;

这有助于更清楚地表明后续行是前几行的延续,并允许您对齐左侧的运算符,从而更易于阅读。

  1. 使用空格通过对齐值或注释或在代码块之间添加间距来使代码更易于阅读。
    更难阅读:
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 通常包含自动格式化功能,该功能将重新格式化所选内容(用鼠标突出显示)或整个文件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值