A lo largo de mi carrera como programadora el tipo de dato ENUM me ha hecho la vida mucho más fácil a la hora de poder leer código y entenderlo y de poder hacer un cambio en un solo lado y que se refleje en otros lados. En este blog post les estaré explicando las 2 razones por las cuales deberían utilizar ENUMS a la hora de escribir su código (siempre y puedan).
¿Que es un ENUM?
Un ENUM es una conglomeración de valores constantes, estos valores por buena práctica deberían tener algo en común. Por ejemplo cuando creas un ENUM de colores de carros no le vas a añadir un valor sobre el tamaño del motor ya que eso no tiene que ver con colores y te puede confundir a ti y a otros programadores.
public enum CarColor
{
RED = 1,
BLUE = 2
}
Los enums al igual que las clases en C# se escriben utilizando PascalCasing. Ósea que la primera letra de cada palabra será en mayúscula.
¿Por que utilizar ENUMS?
1. Legibilidad
Vamos a suponer que tu supervisor te esta asignando una tarea, en el software que están escribiendo el cual trata sobre manejo de ordenes de un restaurante; necesita un nuevo feature. Cuando la orden se reciba a nuestro programa debería pasar por diferentes etapas de procesamiento por ejemplo si la orden ya se recibió entonces eso tendrá un estatus, si la orden se comenzó a trabajar eso tendrá otro estatus….etc.
Como normalmente se hace, en la base de datos de seguro vamos a guardad en la tabla de status un numero del 0 al 3. Para el programador esto no tiene ningún significado. Así que al llegar a una compañía nueva y ver una línea de código como esta.
processor.ChangeStatus(1);
En la cual el parámetro que recibe ese método es estatus.
El programador nuevo no va a saber que significa el número uno, sin embargo al utilizar ENUMs los programadores se pueden familiarizar con el código mas rápido.
processor.ChangeStatus(Enums.OrderStatus.STARTED);
Podemos ver en la segunda orden que el método ahora recibe un ENUM con el valor de started. Los ENUMs son más legibles. Ahora que ese método recibe un ENUM. Podemos en la funcionalidad del método utilizar el valor numérico del ENUM haciendo casting (int)
.
Ya que lo que se va a insertar en la base de datos será un valor numérico utilizamos casting para extraer el valor numerico en la linea (int)Status
.
public void ChangeStatus(OrderStatus status, Guid orderId)
{
//Imagina que la orden es de la base de datos
var order = getOrderFromDatabase(orderId);
order?.Status = (int)status;
saveChanges();
}
Ahora cualquier persona que lea nuestro código sabrá que significan esos estatus de las órdenes y podrán referirse de vuelta al código.
2. Código menos propenso a errores
Con los ENUMs al utilizar una herramienta de desarrolló como Visual Studio podremos tener intellisense, lo cual nos va a presentar los valores que podemos utilizar dependiendo del ENUM.
De esta forma el programador no va a poner 90 en vez de 9 por accidente o algún otro valor incorrecto.