programacion-que-es-una-constante

Qué es una constante

Las constantes en programación son parecidas a las variables, con la (enorme) diferencia que una vez asignado un valor este no puede ser modificado.

Durante la ejecución de nuestro programa, hay ciertos valores que no van a modificarse. El ejemplo más típico es el valor de PI, que no va a cambiar en toda la ejecución de tu programa. Pero hay muchos más.

// Declaración de constantes
const PI = 3.14159
const DAYS_IN_WEEK = 7
const SECONDS_IN_MINUTE = 60
const MONTHS_IN_YEAR = 12
const SPEED_OF_LIGHT = 299792458  // en metros por segundo

Estas son constantes “bastante absolutas”. Son así, porque forman parte de nuestra realidad. Pero no son las únicas que vamos a tener.

Por ejemplo, imagina que estás haciendo un programa que gestiona vehículos. Para ti, en el modelo que has realizado, un vehículo solo puede tener máximo cuatro ruedas. Así tendrías

const MAX_RUEDAS = 4

¿Qué pasaría el día que tengas que gestionar un camión con 8 ruedas? Pues básicamente que tienes un problema y tendrás que revisar tu código 😞.

Pero lo importante ahora mismo es ver claramente que lo que es constante, y lo que no es constante, depende tu programa y de la solución que tengas planteado darle.

¿Cómo se define una constante?

La mayoría de lenguajes tienen una palabra clave reservada para indicar definir una constante. En la mayoría de lenguajes la palabra es const (aunque no en todos).

Dado que a una constante no puede reasignarse otro valor, en general, la asignación debe realizarse en el momento de la declaración.

Así que, por ejemplo, en C++, Java o C# (tipado estricto) una constante se declara así

const int MAX_RUEDAS = 4

Mientras que en JavaScript (tipado dinámico) no sería necesario indicar el tipo, y quedaría así.

const MAX_RUEDAS = 4

Sin embargo, no todos los lenguajes tienen constantes. Por ejemplo, Python no tiene el concepto de constante. Por lo que se debe usar variables normales.

¿Para que sirven las constantes?

Hemos visto que las constantes se comportan de forma muy similar a una variable (en el sentido de que son contenedores donde podemos almacenar datos).

Entonces, ¿Qué utilidad tiene que no podamos reasignar el contenido? Pues tienen un par de ventajas.

La principal es que aumentan la seguridad y la limpieza del código. Evitan que por error, se cambie un valor de forma accidental. Si intento reasignar una constante, el compilador o intérprete me va a decir “eh, muchacho!, eso no lo puedes hacer!“.

Por otro lado, mejora la legibilidad del código. Cuando marcas una variable como constante, le estás diciendo al siguiente programador que no se preocupe demasiado por ese valor, que no va a cambiar.

Finalmente, también puede mejorar el rendimiento del programa, ya que los compiladores pueden optimizar el código que utiliza constantes. Por ejemplo, pueden decidir guardarlas en otra zona de memoria, o incluso sustituirla por completo por su valor.

Esto último depende del compilador que usemos. La mayoría de los compiladores modernos son capaces de identificar las constantes, incluso aunque no las marquemos como tal. Pero, en general, si tiene algún efecto en el rendimiento, será una pequeña mejora.

Constante vs inmutable Avanzado

Que una variable esté definida como constante no significa que su valor no pueda cambiar (que sea inmutable). Perdón si a alguien le ha petado la cabeza, después de decir 20 veces a lo largo de la entrada que constante significa no puede cambiar.

Es algo un poco complejo. Pero, de forma resumida, hemos dicho que una variable o una constante son contenedores o “cajas” donde guardamos datos. Que sea constante significa que no puedo quitarte la caja y darte otra, pero nadie me dice que no pueda cambiar lo que hay dentro de la caja 😅.

Ambas cosas son ciertas. Una constante no puede cambiar, pero nadie me garantiza que su contenido no pueda cambiar. Es un tema complicado, que requiere hablar antes de referencias, y hablaremos en su momento en su propia entrada.