Esta pregunta está inspirada en una pregunta sobre final
en java .
En C / C ++, ¿debería usarlo const
siempre que sea posible?
Sé que ya hay una pregunta relacionada sobre el uso const
en parámetros . Desafortunadamente, esa pregunta y sus respuestas no responden completamente a mi pregunta, porque solo se trata de parámetros de función, pero también me gustaría saber sobre otros casos (por ejemplo, variables locales).
Además, casi todas las respuestas a esa pregunta dicen que deberíamos usarla const
porque contiene información útil sobre la accesibilidad de las variables. Pero esto parece estar en conflicto con una respuesta sobre el uso de final en Java, que final
puede ser superfluo si no contiene información adicional, por lo que debe omitirse para mantener el código corto y limpio.
Entonces, ¿debería usarlo const
siempre que sea posible? Si es así, ¿por qué los consejos para const
C ++ son diferentes de los consejos para final
Java?
fuente
final
yconst
no tienes las mismas garantías.Personalmente,
const
me lleva muy poco tiempo escribir, y muy poco tiempo leer, generalmente mucho menos de lo que se necesita para verificar si algún código muta la variable, y en realidad me impide escribir errores (¿alguien alguna vez incrementó su iterador final por accidente? Etc)También encuentro que ser estricto sobre el uso de const me guía hacia un mejor código de otras maneras, como crear funciones de ayuda para hacer una inicialización no trivial.
fuente
No voy a estar de acuerdo con los otros carteles y le recomiendo que no use el nivel superior
const
en variables y parámetros locales. (Las referencias y punteros a constante, es decirconst T&
, son diferentes, y debe usarlos para la corrección en todo momento cuando sea apropiado).Las ventajas del nivel superior
const
son:Las desventajas son:
No se puede usar en variables "pseudoconst", es decir, variables que se inicializan de alguna manera más complicadas que la construcción directa, pero que no se modifican después, por ejemplo, usando
getline
:Evita la optimización de movimiento en la llamada a la función y el retorno:
He trabajado en una base de código donde
const
se usaba mucho el local , y no lo encontré útil en absoluto, sin embargo, llenó el código con pesadas sutiles como se indicó anteriormente. Personalmente prefiero adoptar una política general de modificación de variables tan raramente como sea posible, y hacer que las funciones sean lo suficientemente pequeñas como para que el uso de una variable sea obvio, e incluso si se modifica, la complejidad de la función es lo suficientemente baja como para que no -problema.fuente
const
en los locales: porque evita modificaciones técnicas, no solo modificaciones conceptuales.La
const
palabra clave debe usarse para variables locales, al igual que los parámetros. Es útil porque:const
debería tomar solo un segundo para escribir, así que no es gran cosa.Tenga en cuenta que no hay una respuesta correcta / incorrecta aquí. En su enlace, el respondedor que tuvo la mayor cantidad de votos argumentados
final
no debe usarse localmente. Sin embargo, el siguiente respondedor lo recomendó encarecidamente.Si su función es simple y trivial , no debe agregar
const
porque todos entienden su intención. Sin embargo, si la lógica en su función no es trivial, debe usar la palabra clave. Recuerde, hay poco que perder.fuente