En Otras características de C ++, Argumentos de referencia de la Guía de estilo de Google C ++ , leí que no se deben usar referencias no constantes.
Todos los parámetros pasados por referencia deben etiquetarse const.
Está claro que mirar las llamadas a funciones que usan referencias como argumentos es absolutamente confuso para los programadores de C, pero C y C ++ son lenguajes diferentes ahora. Si se requiere un parámetro de salida , el uso de un puntero para un parámetro de salida requerido puede hacer que se omita todo el cuerpo de la función, lo que hace que la implementación de una función sea más complicada (aumenta formalmente la complejidad y profundidad ciclomática de una función).
Me gustaría hacer que el código C ++ sea lo más fácil de entender / mantener posible, por lo que generalmente estoy interesado en leer las guías de estilo de codificación. Pero para adaptar las mejores prácticas en un equipo, creo que comprender el fundamento de los elementos de la guía de estilo es un factor importante.
¿Las referencias no constantes son realmente tan malas? ¿Prohibirlos solo es específico de Google o es una regla comúnmente aceptada? ¿Qué justifica el esfuerzo adicional para implementar parámetros de salida como punteros?