Esas últimas semanas, me encontré usando un montón de const
en todas partes. No solo en declaraciones de métodos o argumentos, sino incluso para variables temporales.¿Estoy abusando de const?
Déjenme ilustrarlo con una simple función.
solía escribir:
// A dummy function that sums some computation results
unsigned int sum_results(const Operation& p1, const Operation& p2)
{
unsigned int result1 = p1.computeResult();
unsigned int result2 = p2.computeResult();
// Well this function could be in one single line but
// assume it does more complex operations
return result1 + result2;
}
pero ahora es más como:
// A dummy function that sums some computation results
unsigned int sum_results(const Operation& p1, const Operation& p2)
{
const unsigned int result1 = p1.computeResult();
const unsigned int result2 = p2.computeResult();
// Well this function could be in one single line but
// assume it does more complex operations
return result1 + result2;
}
Este último tiene más sentido para mí y parece menos propenso a errores. (Admito que en este ejemplo, en realidad no importa) Sin embargo, he visto muy pocas muestras de código donde const
se utilizó en variables temporales/locales. Y me gustaría entender por qué.
¿Hay alguna razón por la cual este no es un caso común? ¿Estoy abusando de mi uso de const
? ¿O solo soy yo quien ha estado buscando muestras equivocadas?
+1. Poner const en variables locales que no van a cambiar (o no deberían cambiar) detecta errores antes de que ocurran (en tiempo de compilación) y muestra claramente su intención al siguiente programador que tiene que mirar su código. –
Pero, ¿daría lugar a un mejor rendimiento o una mejor optimización por parte del compilador? – DumbCoder
@DumbCoder: Tal vez, pero muy poco probable. Los compiladores modernos son muy buenos para optimizar el código. Si a uno realmente le importa, deberían probar ambos e inspeccionar el código de la máquina emitida. – sharptooth