Я присоединился к новой группе, у которой есть правила кодирования, которые (мне) кажутся датированными.
Но просто сплотиться против машины без действительной резервной копии не приведет меня никуда. Поэтому я обращаюсь к SO, чтобы узнать, можем ли мы с рациональными причинами/против (эй, я могу ошибаться по своему выбору, поэтому обе стороны аргумента будут оценены).
Рекомендация, которая подходит для аргумента:
Совет. Используйте указатели вместо ссылок для возвращаемых аргументов.
void Func1( CFoo &Return ); // bad void Func2( CFoo *pReturn ); // good
Обоснование:
Когда вы используете ссылку, она выглядит так же, как значение. Вызывающий может быть удивлен, что его значение было изменено после вызова функции. Вызывающий может невинно изменять значение без значения, чтобы повлиять на значение вызывающего абонента. Используя указатель, как вызывающему, так и вызываемому понятно, что значение может быть изменено. Использование ссылок может быть особенно ошибочным в обзорах кода.