[英]Why does cpplint discourage Streams?
我只是在玩 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]
我很好奇為什么不鼓勵使用流。
流可能導致問題的主要原因是國際化。
每當您需要使用幾種不同的語言生成具有動態內容的文本時,事情就會出錯,因為每種語言都有自己的語法規則。 例如,在英語中你會使用:
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 個句子部分移動到一個表格中,您將在其中按鍵查找它們,而且它有效!
然后您從gettext
文檔中發現Polish ,這里是文件( plik ) 的復數形式:
1 => 點擊
2,3,4 => 普利基
5-21 => pliko'w
22-24 => 普利基
25-31 => pliko'w
嗯……突然事情變得困難了,對吧?
實際上,情況可能會變得更糟。 並非所有語言都需要以相同的順序放置您的動態條目!
這就是為什么除了為要顯示的每個文本編寫可重載的 C++ 函數並讓翻譯人員提供重載之外,流實際上不能用於國際化文本。 哼...
兩者各有利弊,谷歌風格指南只是非常固執己見,以盡可能確保一致性。
這是根據谷歌 C++ 編碼指南檢查 C++ 的嗎? 如果是這樣,那么原因是谷歌的 c++ 指南通常被認為有些古怪,並不真正適用於許多人認為現代 c++ 的良好實踐。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.