Jorge Vallejo Blog

Blog del creativo, ilustrador y profesor de videojuegos Jorge Vallejo

Introducción a las Enumeraciones en Programación: Una Guía para Principiantes

Las enumeraciones son la solución para mejorar la legibilidad y facilidad de uso de tu código.
En esta guía completa, aprenderás todo lo que necesitas saber sobre las enumeraciones, desde su definición hasta su uso en diferentes lenguajes de programación.

¿Qué son las enumeraciones?

En programación, una enumeración (también llamada “enum”) es un tipo de dato que define un conjunto de valores relacionados. Es una forma útil de organizar y agrupar valores que tienen un significado similar.
Las enumeraciones se usan para ayudarnos como humanos a entender el código ya que consiguen que sea menos abstracto, fácil de entender, claro y evita confusiones.

Ejemplo sin usar enumeraciones Mapa del tesoro:
Imagina que tienes que definir puntos cardinales para después ser comparados y saber en que dirección está un objeto respecto al mapa del tesoro, si está en el :Norte, Noroeste, Noreste, Este, Sureste, Sur, Suroeste y Oeste

Puedes usar un entero direccion para guardar ese valor, pero.. ¿Cuánto vale?
Como vas a necesitar comparar el valor decides escribirlo en un comentario

// Norte = 0 // Noreste = 1 // Este = 2 // Sureste = 3 // Sur = 4 // Suroeste = 5 // Oeste = 6 // Noroeste = 7
int direccion = 1;

Así puedes comparar la dirección y saber donde esta ubicado el objeto

if (direccion == 0) {
  std::cout << "Esta en el norte." << std::endl;
} else if (direccion == 1) {
  std::cout << "Esta en el noreste." << std::endl;
} else if (direccion == 2) {
  std::cout << "Esta en el este." << std::endl;
} else if (direccion == 3) {
  std::cout << "Esta en el sureste." << std::endl;
} else if (direccion == 4) {
  std::cout << "Esta en  el sur." << std::endl;
} else if (direccion == 5) {
  std::cout << "Esta en el suroeste." << std::endl;
} else if (direccion == 6) {
  std::cout << "Esta en el oeste." << std::endl;
} else if (direccion == 7) {
  std::cout << "Esta en el noroeste." << std::endl;
} else {
  std::cout << "Dirección no válida." << std::endl;
}

Problemas con este enfoque:

  • Falta de legibilidad: El código es difícil de entender, ya que los valores numéricos no tienen un significado claro.
  • Mantenimiento deficiente: Es difícil agregar nuevos puntos cardinales o modificar los existentes.
  • Errores: Es fácil cometer errores al usar valores numéricos incorrectos.

Cuando escribimos código debemos tener presente que al menos dos personas lo van a leer : tu yo actual, y tu yo futuro cuando repases el código.
Imagina que ves un objeto que tiene la variable direccionEnterrado=4 y han pasado un par de semanas desde que escribiste el código
– 4 ¿Qué era? ¿Era sur o era suroeste?
– ¿Dónde tengo apuntado lo que corresponde cada valor?
Ahí es donde entra la gracia de la enumeración, aclarar, evitar errores y ser más fácil de leer.

Ventajas de usar una enumeración:

  • Mayor legibilidad: El código es más fácil de entender, ya que se usan nombres descriptivos para los valores.
  • Mantenimiento mejorado: Es más fácil agregar nuevos puntos cardinales o modificar los existentes.
  • Seguridad de tipos: Las enumeraciones evitan errores al usar valores no válidos.

Ejemplo usando enumeraciones Mapa del tesoro:

Usar enumeraciones requiere de un paso previo, definir la propia enumeracion como va a identificar direcciones podemos llamarla puntosCardinales

En diferentes lenguajes de programación
C++ (Unreal Engine):

enum class PuntosCardinales : uint8 {
  Norte = 0,
  Noreste = 1,
  Este = 2,
  Sureste = 3,
  Sur = 4,
  Suroeste = 5,
  Oeste = 6,
  Noroeste = 7
};
from enum import Enum

class PuntosCardinales(Enum):
  Norte = 0
  Noreste = 1
  Este = 2
  Sureste = 3
  Sur = 4
  Suroeste = 5
  Oeste = 6
  Noroeste = 7
public enum PuntosCardinales {
  Norte = 0,
  Noreste = 1,
  Este = 2,
  Sureste = 3,
  Sur = 4,
  Suroeste = 5,
  Oeste = 6,
  Noroeste = 7
}
const PuntosCardinales = {
  NORTE: 0,
  NORESTE: 1,
  ESTE: 2,
  SURESTE: 3,
  SUR: 4,
  SUROESTE: 5,
  OESTE: 6,
  NOROESTE: 7
};

Una vez definida la enumeración en lugar de guardar un numero guardamos una opción de la misma.

PuntosCardinales direccion = PuntosCardinales::Noreste;

Ahora si cualquiera que vea el código sabe que se ha guardado Noreste , es mucho más fácil de entender, tanto para tu yo de ahora como para el futuro como para un compañero que use tu código.

Las enumeraciones casan muy bien con los switch ya que se evalúan casos así:


switch (direccion) {
  case PuntosCardinales::Norte:
    UE_LOG(LogTemp, Warning, TEXT("Tesoro ubicado en Norte"));
    break;
  case PuntosCardinales::Noreste:
    UE_LOG(LogTemp, Warning, TEXT("Tesoro ubicado en Noreste"));
    break;
  case PuntosCardinales::Este:
    UE_LOG(LogTemp, Warning, TEXT("Tesoro ubicado en Este"));
    break;
  case PuntosCardinales::Sureste:
    UE_LOG(LogTemp, Warning, TEXT("Tesoro ubicado en Sureste"));
    break;
  case PuntosCardinales::Sur:
    UE_LOG(LogTemp, Warning, TEXT("Tesoro ubicado en Sur"));
    break;
  case PuntosCardinales::Suroeste:
    UE_LOG(LogTemp, Warning, TEXT("Tesoro ubicado en Suroeste"));
    break;
  case PuntosCardinales::Oeste:
    UE_LOG(LogTemp, Warning, TEXT("Tesoro ubicado en Oeste"));
    break;
  case PuntosCardinales::Noroeste:
    UE_LOG(LogTemp, Warning, TEXT("Tesoro ubicado en Noroeste"));
    break;
}

Las enumeraciones ofrecen varias ventajas:

  • Mejora la legibilidad del código: Al usar nombres descriptivos para los valores, el código se vuelve más fácil de entender y mantener.
  • Seguridad de tipos: Las enumeraciones evitan errores al asegurarnos de que solo se usen los valores válidos.
  • Facilidad de uso: Las enumeraciones simplifican el código al evitar la necesidad de usar constantes numéricas.

Conclusión

Las enumeraciones son una herramienta esencial para escribir código limpio, eficiente y fácil de entender. Con esta guía, estás listo para comenzar a usar enumeraciones en tus propios programas.

Si te ha gustado este articulo compártelo y si tienes algo mas que añadir no dudes en dejar un comentario.

Ad debug output

The ad is displayed on the page

current post: Introducción a las Enumeraciones en Programación: Una Guía para Principiantes, ID: 3391

Ad: Anuncio2 (2573)
Placement: After Content 2 (after-content_2)

Display Conditions
general conditions
Adwp_the_query
term_id0
taxonomy0
is_main_query11
page01
numpages01
is_archive1
is_search1
is_home1
is_4041
is_attachment1
is_singular11
is_front_page1
is_feed1




Find solutions in the manual

Leave a Reply

Your email address will not be published. Required fields are marked *