lzl*_*31x 0 c++ google-style-guide
我正在转换我的代码以遵循google C++ 风格指南。引用参数规则规定“所有通过引用传递的参数都必须标记为 const”和“输入参数是值或 const 引用,而输出参数是指针”。
关于签名void MyTable::LoadTable(ifstream &fin),我如何标记fin const给定的参数LoadTable调用一些非常量函数fin,例如fin.seekg?我认为fin应该被视为输入/输出参数,因此它有点特殊。在这种情况下,谷歌员工会怎么做?
更新:我知道谷歌风格指南有很多批评。我只是想知道谷歌员工如何解决这个问题,也许我找到了答案:还有另一个规则Streams读取“仅使用流进行日志记录”。也许他们只是在这种情况下不使用流。
为了遵守 Google 指南,请更改声明
void MyTable::LoadTable( ifstream& fin )
Run Code Online (Sandbox Code Playgroud)
到
void MyTable::LoadTable( ifstream* fin )
Run Code Online (Sandbox Code Playgroud)
现在您可能想知道,这有什么意义?很大一部分原因可能是 Google C++ 风格指南在 Google 之外没有多大意义。其中部分内容可以通过假设需要维护大量 C 风格遗留代码来解释,但其中部分内容却令人困惑。
仅举一个例子,std::getline它非常违反 Google 风格指南。