Juan Ignacio Rodriguez de León
Actualmente trabajo como analista de desarrollo en la Dirección General de Transformación Digital de los Servicios Públicos del Gobierno de Canarias. Enamorado de Python desde la versión 1.4.
Session
Making impossible states unrepresentable es un principio de diseño que suele usarse en lenguajes con tipado de datos fuerte, pero que puede aplicarse igualmente a cualquier lenguaje, estructura de datos o base de datos. La idea es reducir los estados en los que pueden estar nuestros datos, idealmente haciendo imposible representar estados inválidos.
Si conseguimos esto, no solo reducimos el número de estados (Lo que ya de por si es beneficioso), también reducimos o eliminamos los estados conflictivos, lo que es aun mejor. El sistema no tiene que ocuparse de manejar estos estados, porque nunca se los va a encontrar. Hemos hecho literalmente imposible que estos errores se presenten en el sistema.
Veremos varios ejemplos de código Python que inicialmente permiten la representación de estados imposibles, y lo modificaremos para eliminarlos. Estos ejemplos pretenden mostrar como una mejora
relativamente simple puede traducirse en una simplificación drástica del sistema.
En resumen, veremos la importancia de realizar un análisis de los estados de nuestros datos, para determinar si permiten representar estados imposibles. Si es el caso, estudiar la posibilidad de usar
representaciones alternativas que los eliminen. Esto presenta ventajas como la reducción de la complejidad del sistema, del código, de las pruebas y del tratamiento de excepciones, entre otras.