О «Справочных аргументах» правило в стиле Google C ++

Я конвертирую свой код, чтобы следовать Руководство по стилю Google C ++. Справочные Аргументы Правило гласит: «Все параметры, передаваемые по ссылке, должны быть помечены как const» и «входные аргументы являются значениями или ссылками const, а выходные аргументы являются указателями».

Что касается подписи void MyTable::LoadTable(ifstream &fin)как я могу пометить параметр fin const дано LoadTable вызывает некоторую неконстантную функцию finнапример, fin.seekg? Я думаю fin должен рассматриваться как параметр ввода / вывода, поэтому он немного особенный. Что гуглеры будут делать в этой ситуации?


ОБНОВЛЕНИЕ: я знал, что есть много критических замечаний по поводу руководства по стилю Google. Мне просто интересно, как гуглеры справляются с этим, и, возможно, я нашел ответ: есть другое правило Streams чтение «Использовать потоки только для регистрации». Может быть, они просто не используют потоки в этой ситуации.

0

Решение

Чтобы соответствовать правилам Google, измените объявление.

void MyTable::LoadTable( ifstream& fin )

в

void MyTable::LoadTable( ifstream* fin )

Теперь вам может быть интересно, какой в ​​этом смысл? И большая часть ответа, вероятно, заключается в том, что руководство по стилю Google C ++ просто не имеет особого смысла за пределами Google. Отчасти это можно объяснить, постулируя необходимость поддерживать большой объем унаследованного кода в стиле C, но его части просто сбивают с толку.

Как только один пример, std::getline очень сильно нарушает правила стиля Google.

3

Другие решения


По вопросам рекламы [email protected]