15

我只是在玩 cpplint 并尝试在我为好玩而编写的一些代码上运行它。我意识到以下行被标记了错误消息:-

#include <iostream>
...
#include <fstream>

yoohoo.cpp:3:  Streams are highly discouraged.  [readability/streams] [3]
yoohoo.cpp:5:  Streams are highly discouraged.  [readability/streams] [3]

我很好奇为什么不鼓励使用流。

4

2 回答 2

16

流可能导致问题的主要原因是国际化。

每当您需要以几种不同的语言生成具有动态内容的文本时,事情就会出错,因为每种语言都有自己的语法规则。例如,在英语中,您将使用:

void print(std::ostream& out, int i) {
    out << "You retrieved ";
    switch(i) {
    case 0: out << "no file."; return;
    case 1: out << "1 file."; return;
    default: out << i << " files." return;
}

那太好了,对吧?

因此,当您翻译成法语时,您只需决定将所有这 4 个句子部分移动到一个表格中,您将在其中按键查找它们,它就可以了!

然后你从文档中发现了Polishgettext ,这里是file ( plik ) 的复数形式:

1 => 点

2,3,4 => 普利基

5-21 => 普利科

22-24 => 普利基

25-31 => pliko'w

哼……突然事情变得困难了,对吧?

实际上,情况可能会变得更糟。并非所有语言都需要以相同的顺序放置您的动态条目!

这就是为什么流实际上不能用于国际化文本,除非为每个要显示的文本编写一个可重载的 C++ 函数,并让翻译器提供重载!哼...

两者各有利弊,谷歌风格指南非常固执己见,以尽可能确保一致性。

于 2012-10-12T17:24:56.793 回答
4

这是根据 google c++ 编码指南检查 c++ 的那个吗?如果是这样,那么原因是 google 的 c++ 指南通常被认为有些古怪,并不真正适用于许多人认为现代 c++ 的良好实践。

于 2012-10-12T13:33:09.413 回答