Недавно я имел обмен с другим разработчиком С++ о следующем использовании const
:
void Foo(const int bar);
Он считал, что использование const
таким образом было хорошей практикой.
Я утверждал, что он ничего не делает для вызывающей функции (поскольку копия аргумента должна была быть передана, нет дополнительной гарантии безопасности в отношении перезаписи). Кроме того, это не позволяет разработчику Foo
изменять свою частную копию аргумента. Таким образом, он как мандаты, так и рекламирует детали реализации.
Не конец света, но, конечно же, не что-то, что можно рекомендовать в качестве хорошей практики.
Мне любопытно, что другие думают по этому поводу.
Edit:
Хорошо, я не понимал, что константа аргументов не учитывает подпись функции. Таким образом, можно отметить аргументы как const
в реализации (.cpp), а не в заголовке (.h) - и компилятор в порядке с этим. В этом случае я полагаю, что политика должна быть одинаковой для создания локальных переменных const.
Можно было бы утверждать, что наличие разных поисковых сигнатур в заголовке и исходном файле будет путать других (так как это меня смутило бы). Хотя я стараюсь следовать Принципу наименьшего удивления с тем, что я пишу, я думаю, разумно ожидать, что разработчики признают это законным и полезным.