В разделе « Другие функции C ++», «Аргументы ссылок » Руководства по стилю Google C ++ , я читал, что неконстантные ссылки не должны использоваться.
Все параметры, передаваемые по ссылке, должны быть помечены как const.
Ясно, что рассмотрение вызовов функций, использующих ссылки в качестве аргументов, абсолютно запутанно для программистов на C, но C и C ++ теперь разные языки. Если выходной параметр необходим , используя указатель для требуемого выходного параметра, может вызвать все тело функции должны быть пропущено, что делает реализацию функции более сложной (формально увеличивает цикломатическую сложность и глубину от функции).
Я хотел бы сделать код C ++ настолько простым для понимания / поддержки, насколько это возможно, поэтому мне, как правило, интересно читать руководства по стилю кодирования. Но для того, чтобы адаптировать лучшие практики в команде, я думаю, что понимание обоснования элементов руководства по стилю является важным фактором.
Неконстантные ссылки действительно так плохи? Запрещено ли это только для Google или это общепринятое правило? Что оправдывает дополнительные усилия для реализации выходных параметров в качестве указателей?