15 c++ stl coding-style
我正在玩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]
Run Code Online (Sandbox Code Playgroud)
我很好奇为什么不鼓励使用溪流.
Mat*_* M. 15
流可能导致问题的主要原因是国际化.
每当您需要使用几种不同语言生成包含动态内容的文本时,事情就会变得很糟糕,因为每种语言都有自己的语法规则.例如,在英语中你会使用:
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;
}
Run Code Online (Sandbox Code Playgroud)
那太棒了?
因此,当您翻译成法语时,您只需决定将所有这4个句子部分移动到一个表中,您可以通过键查找它们,并且它可以正常工作!
然后你发现波兰语,从gettext文档中,这里是复数形式的文件(plik):
1 => plik
2,3,4 => pliki
5-21 => pliko'w
22-24 => pliki
25-31 => pliko'w
嗯......突然间事情变得越来越困难吧?
实际上,它会变得更糟.并非所有语言都需要以相同的顺序放置动态条目!
这就是为什么流不能实际用于国际化文本,而不是为每个要显示的文本编写可重载的C++函数,并让翻译者提供重载!哼...
两者都有利有弊,Google Style Guide非常注重确保尽可能保持一致性.