簡體   English   中英

為什么 cpplint 不鼓勵使用 Streams?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM