SlideShare una empresa de Scribd logo
1 de 37
Estados Imposibles
(Y como evitarlos)
Juan Ignacio Rodrígue de León
@jileon
De que va
 Qué son los estados imposibles y
por qué deberíamos evitarlos
 Ejemplos de estados imposibles y
como evitarlos
 Enlaces y resumen
 Make Invalid States
Unrepresentable
Art by Maomi - https://www.pinterest.com/pin/565905509422569311/
Principio de diseño
 Suele usarse para los tipos de datos, pero
se aplica a Estructuras, bases de datos, etc.
 La idea es reducir o eliminar los estados en
los que pueden estar los datos, idealmente
haciendo imposible representar estados
inválidos
Para campos estado
Obviamente es aplicable cuando tenemos codificado un
estado directamente.
Por ejemplo, supongamos un sistema de publicaciones
con tres estados posibles:
🔘 En preparación
🔘 En borrador
🔘 Publicado
Estas cosas pasan
¿Es un borrador?
Disclaimer
Solo Estados excluyentes
Una posible solución
No, es broma
 El estado no se refiere solo a estos
estados especificos, cualquier
configuración de datos tiene un
estado
 Vamos a ver otro ejemplo en que
no hay un estado explicito, pero
nuestra elección de la estructura de
datos implica un estado
Periodos contiguos de tiempo
 Vamos a representar una serie de
periodos contiguos en el tiempo
 Por ejemplo, en una aplicación que
me permita monitorizar en todo
momento lo que estoy haciendo (o
dejndo de hacer)
¡Fácil!
Pero...
Permite representar estados
imposibles (En este caso, no
deseados)
...Huecos
...Solapamiento
Eliminar redundacia
 Podemos hacer que sea imposible
representar periodos con huecos
y/o que se superpongan
 Similar a normalizar una base de
datos: Eliminar la redundacia
Eliminar fecha final
 La marca de final de un periodo es
redundante con la de inicio del
siguiente
 Así que solo necesitamos una única
fecha, la de inicio. El final está
definido por el inicio del siguiente
periodo
Menos es más
Ventajas
Podemos ver algunas ventajas de
esta representación analizando
algunas de las operaciones que
podríamos hacer
Dividir un periodo
 Primer caso:
 Hacer ajustes en el periodo anterior
 Insertar un nuevo periodo (posiblemente consultando
el periodo siguiente)
 Verificar las restricciones impuestas
 Segundo caso:
 añadir una fecha el conjunto
Vale, pero ...
 Yo sigo necesitando trabajar con periodos, con su inicio y final
(Por ejemplo, porque tengo código ya funcionando que usa ese
convenio)
 Resulta trivial proyectar la secuencia de fechas a esta forma
 Mientras la representación subyacente siga siendo una lista de
fechas, las restricciones de los periodos siempre se cumplirán
Algo así...
Ya casi estamos
Clases y Objetos
Vamos a representar un
semáforo en un cruce
Primera aproximación
My work here is done
¿Qué podría salir mal..?
Segunda versión¹
Segunda versión¹
Segunda versión²
Resumen
 Conviene echar una pensada sobre los estados y ver si podemos
representar estados imposibles, y en ese caso, intentar eliminar
esa posibilidad
 Cualquier conjunto de datos interrelacionados son un estado
 La representación de un objeto “real” no tiene por que seguir su
estructura “fisica”
Enlaces
 Charla en YouTube Making Impossible States
Impossible por Richard Feldman
https://www.youtube.com/watch?v=IcgmSRJHu_8
 Artículo de Kevin Mahoney Applying "Make
Invalid States Unrepresentable"
https://kevinmahoney.co.uk/articles/applying-misu
Estados imposibles y como evitarlos

Más contenido relacionado

Más de Juan Rodríguez

Charla introducción a RaspberryPI
Charla introducción a RaspberryPICharla introducción a RaspberryPI
Charla introducción a RaspberryPIJuan Rodríguez
 
Guia (breve) de supervivencia a python 3
Guia (breve) de supervivencia a python 3Guia (breve) de supervivencia a python 3
Guia (breve) de supervivencia a python 3Juan Rodríguez
 
¡A todo Kanban! ~ Introducción a kanban
¡A todo Kanban! ~ Introducción a kanban¡A todo Kanban! ~ Introducción a kanban
¡A todo Kanban! ~ Introducción a kanbanJuan Rodríguez
 
02 python Programación orientada a objetos y funcional
02 python Programación orientada a objetos y funcional02 python Programación orientada a objetos y funcional
02 python Programación orientada a objetos y funcionalJuan Rodríguez
 
00 introducción a Python
00 introducción a Python00 introducción a Python
00 introducción a PythonJuan Rodríguez
 
Taller de introducción al desarrollo web con Django
Taller de introducción al desarrollo web con DjangoTaller de introducción al desarrollo web con Django
Taller de introducción al desarrollo web con DjangoJuan Rodríguez
 
Presentacion Google Mini Adeje 16 Oct 2008
Presentacion Google Mini Adeje 16 Oct 2008Presentacion Google Mini Adeje 16 Oct 2008
Presentacion Google Mini Adeje 16 Oct 2008Juan Rodríguez
 
Algunos recursos para desarrollo Web
Algunos recursos para desarrollo WebAlgunos recursos para desarrollo Web
Algunos recursos para desarrollo WebJuan Rodríguez
 
Hojas de estilo CSS (Cascade Style Sheets)
Hojas de estilo CSS (Cascade Style Sheets)Hojas de estilo CSS (Cascade Style Sheets)
Hojas de estilo CSS (Cascade Style Sheets)Juan Rodríguez
 

Más de Juan Rodríguez (12)

Charla introducción a RaspberryPI
Charla introducción a RaspberryPICharla introducción a RaspberryPI
Charla introducción a RaspberryPI
 
Guia (breve) de supervivencia a python 3
Guia (breve) de supervivencia a python 3Guia (breve) de supervivencia a python 3
Guia (breve) de supervivencia a python 3
 
¡A todo Kanban! ~ Introducción a kanban
¡A todo Kanban! ~ Introducción a kanban¡A todo Kanban! ~ Introducción a kanban
¡A todo Kanban! ~ Introducción a kanban
 
02 python Programación orientada a objetos y funcional
02 python Programación orientada a objetos y funcional02 python Programación orientada a objetos y funcional
02 python Programación orientada a objetos y funcional
 
01 el lenguaje Python
01 el lenguaje Python01 el lenguaje Python
01 el lenguaje Python
 
00 introducción a Python
00 introducción a Python00 introducción a Python
00 introducción a Python
 
Taller de introducción al desarrollo web con Django
Taller de introducción al desarrollo web con DjangoTaller de introducción al desarrollo web con Django
Taller de introducción al desarrollo web con Django
 
Presentación appy/pod
Presentación appy/podPresentación appy/pod
Presentación appy/pod
 
Presentacion Google Mini Adeje 16 Oct 2008
Presentacion Google Mini Adeje 16 Oct 2008Presentacion Google Mini Adeje 16 Oct 2008
Presentacion Google Mini Adeje 16 Oct 2008
 
Algunos recursos para desarrollo Web
Algunos recursos para desarrollo WebAlgunos recursos para desarrollo Web
Algunos recursos para desarrollo Web
 
Hojas de estilo CSS (Cascade Style Sheets)
Hojas de estilo CSS (Cascade Style Sheets)Hojas de estilo CSS (Cascade Style Sheets)
Hojas de estilo CSS (Cascade Style Sheets)
 
Extranet Parlamento
Extranet ParlamentoExtranet Parlamento
Extranet Parlamento
 

Último

La importancia de las pruebas de producto para tu empresa
La importancia de las pruebas de producto para tu empresaLa importancia de las pruebas de producto para tu empresa
La importancia de las pruebas de producto para tu empresamerca6
 
PREGRADO-PRESENCIAL-FASE-C-202401 (1).pdf
PREGRADO-PRESENCIAL-FASE-C-202401 (1).pdfPREGRADO-PRESENCIAL-FASE-C-202401 (1).pdf
PREGRADO-PRESENCIAL-FASE-C-202401 (1).pdfluisccollana
 
tipos de organización y sus objetivos y aplicación
tipos de organización y sus objetivos y aplicacióntipos de organización y sus objetivos y aplicación
tipos de organización y sus objetivos y aplicaciónJonathanAntonioMaldo
 
CAPACITACION_higiene_industrial (1).ppt...
CAPACITACION_higiene_industrial (1).ppt...CAPACITACION_higiene_industrial (1).ppt...
CAPACITACION_higiene_industrial (1).ppt...jhoecabanillas12
 
bases-cye-2024(2) una sola descarga en base de feria de
bases-cye-2024(2) una sola descarga en base de feria debases-cye-2024(2) una sola descarga en base de feria de
bases-cye-2024(2) una sola descarga en base de feria deCalet Cáceres Vergara
 
DIPLOMA DE CERTIFICADO EQQW_removed.pptx
DIPLOMA DE CERTIFICADO EQQW_removed.pptxDIPLOMA DE CERTIFICADO EQQW_removed.pptx
DIPLOMA DE CERTIFICADO EQQW_removed.pptxKaterin yanac tello
 
ESTUDIO DE IMPACTO AMBIENTAL de explotación minera.pptx
ESTUDIO DE IMPACTO AMBIENTAL de  explotación minera.pptxESTUDIO DE IMPACTO AMBIENTAL de  explotación minera.pptx
ESTUDIO DE IMPACTO AMBIENTAL de explotación minera.pptxKatherineFabianLoza1
 
REPORTE-HEMEROGRÁFICO-MARZO-2024-IRAPUATO-¿CÓMO VAMOS?.pdf
REPORTE-HEMEROGRÁFICO-MARZO-2024-IRAPUATO-¿CÓMO VAMOS?.pdfREPORTE-HEMEROGRÁFICO-MARZO-2024-IRAPUATO-¿CÓMO VAMOS?.pdf
REPORTE-HEMEROGRÁFICO-MARZO-2024-IRAPUATO-¿CÓMO VAMOS?.pdfIrapuatoCmovamos
 
que son los planes de ordenamiento predial POP.pptx
que son los planes de ordenamiento predial  POP.pptxque son los planes de ordenamiento predial  POP.pptx
que son los planes de ordenamiento predial POP.pptxSergiothaine2
 
Data Warehouse.gestion de bases de datos
Data Warehouse.gestion de bases de datosData Warehouse.gestion de bases de datos
Data Warehouse.gestion de bases de datosssuser948499
 
SUNEDU - Superintendencia Nacional de Educación superior Universitaria
SUNEDU - Superintendencia Nacional de Educación superior UniversitariaSUNEDU - Superintendencia Nacional de Educación superior Universitaria
SUNEDU - Superintendencia Nacional de Educación superior Universitariachayananazcosimeon
 
LA LEY DE LAS XII TABLAS en el curso de derecho
LA LEY DE LAS XII TABLAS en el curso de derechoLA LEY DE LAS XII TABLAS en el curso de derecho
LA LEY DE LAS XII TABLAS en el curso de derechojuliosabino1
 
REPORTE DE INCIDENCIA DELICTIVA MARZO 2024.pdf
REPORTE DE INCIDENCIA DELICTIVA MARZO 2024.pdfREPORTE DE INCIDENCIA DELICTIVA MARZO 2024.pdf
REPORTE DE INCIDENCIA DELICTIVA MARZO 2024.pdfIrapuatoCmovamos
 
17 PRACTICAS - MODALIDAAD FAMILIAAR.docx
17 PRACTICAS - MODALIDAAD FAMILIAAR.docx17 PRACTICAS - MODALIDAAD FAMILIAAR.docx
17 PRACTICAS - MODALIDAAD FAMILIAAR.docxmarthaarroyo16
 
CUESTIONARIO A ADICCION A REDES SOCIALES.pdf
CUESTIONARIO A ADICCION A REDES SOCIALES.pdfCUESTIONARIO A ADICCION A REDES SOCIALES.pdf
CUESTIONARIO A ADICCION A REDES SOCIALES.pdfEDUARDO MAMANI MAMANI
 
HABILESASAMBLEA Para negocios independientes.pdf
HABILESASAMBLEA Para negocios independientes.pdfHABILESASAMBLEA Para negocios independientes.pdf
HABILESASAMBLEA Para negocios independientes.pdfGEINER22
 
El Teatro musical (qué es, cuál es su historia y trayectoria...)
El Teatro musical (qué es, cuál es su historia y trayectoria...)El Teatro musical (qué es, cuál es su historia y trayectoria...)
El Teatro musical (qué es, cuál es su historia y trayectoria...)estebancitoherrera
 
Ivu- taller de diseño arquitectonico l , adicion y sustraccion de cubos,
Ivu- taller de diseño arquitectonico l , adicion y sustraccion de cubos,Ivu- taller de diseño arquitectonico l , adicion y sustraccion de cubos,
Ivu- taller de diseño arquitectonico l , adicion y sustraccion de cubos,juberrodasflores
 
2024 2024 202420242024PPT SESIÓN 03.pptx
2024 2024 202420242024PPT SESIÓN 03.pptx2024 2024 202420242024PPT SESIÓN 03.pptx
2024 2024 202420242024PPT SESIÓN 03.pptxccordovato
 
Croquis de riesgo de trabajo gasolinera.pdf
Croquis de riesgo de trabajo gasolinera.pdfCroquis de riesgo de trabajo gasolinera.pdf
Croquis de riesgo de trabajo gasolinera.pdfhernestosoto82
 

Último (20)

La importancia de las pruebas de producto para tu empresa
La importancia de las pruebas de producto para tu empresaLa importancia de las pruebas de producto para tu empresa
La importancia de las pruebas de producto para tu empresa
 
PREGRADO-PRESENCIAL-FASE-C-202401 (1).pdf
PREGRADO-PRESENCIAL-FASE-C-202401 (1).pdfPREGRADO-PRESENCIAL-FASE-C-202401 (1).pdf
PREGRADO-PRESENCIAL-FASE-C-202401 (1).pdf
 
tipos de organización y sus objetivos y aplicación
tipos de organización y sus objetivos y aplicacióntipos de organización y sus objetivos y aplicación
tipos de organización y sus objetivos y aplicación
 
CAPACITACION_higiene_industrial (1).ppt...
CAPACITACION_higiene_industrial (1).ppt...CAPACITACION_higiene_industrial (1).ppt...
CAPACITACION_higiene_industrial (1).ppt...
 
bases-cye-2024(2) una sola descarga en base de feria de
bases-cye-2024(2) una sola descarga en base de feria debases-cye-2024(2) una sola descarga en base de feria de
bases-cye-2024(2) una sola descarga en base de feria de
 
DIPLOMA DE CERTIFICADO EQQW_removed.pptx
DIPLOMA DE CERTIFICADO EQQW_removed.pptxDIPLOMA DE CERTIFICADO EQQW_removed.pptx
DIPLOMA DE CERTIFICADO EQQW_removed.pptx
 
ESTUDIO DE IMPACTO AMBIENTAL de explotación minera.pptx
ESTUDIO DE IMPACTO AMBIENTAL de  explotación minera.pptxESTUDIO DE IMPACTO AMBIENTAL de  explotación minera.pptx
ESTUDIO DE IMPACTO AMBIENTAL de explotación minera.pptx
 
REPORTE-HEMEROGRÁFICO-MARZO-2024-IRAPUATO-¿CÓMO VAMOS?.pdf
REPORTE-HEMEROGRÁFICO-MARZO-2024-IRAPUATO-¿CÓMO VAMOS?.pdfREPORTE-HEMEROGRÁFICO-MARZO-2024-IRAPUATO-¿CÓMO VAMOS?.pdf
REPORTE-HEMEROGRÁFICO-MARZO-2024-IRAPUATO-¿CÓMO VAMOS?.pdf
 
que son los planes de ordenamiento predial POP.pptx
que son los planes de ordenamiento predial  POP.pptxque son los planes de ordenamiento predial  POP.pptx
que son los planes de ordenamiento predial POP.pptx
 
Data Warehouse.gestion de bases de datos
Data Warehouse.gestion de bases de datosData Warehouse.gestion de bases de datos
Data Warehouse.gestion de bases de datos
 
SUNEDU - Superintendencia Nacional de Educación superior Universitaria
SUNEDU - Superintendencia Nacional de Educación superior UniversitariaSUNEDU - Superintendencia Nacional de Educación superior Universitaria
SUNEDU - Superintendencia Nacional de Educación superior Universitaria
 
LA LEY DE LAS XII TABLAS en el curso de derecho
LA LEY DE LAS XII TABLAS en el curso de derechoLA LEY DE LAS XII TABLAS en el curso de derecho
LA LEY DE LAS XII TABLAS en el curso de derecho
 
REPORTE DE INCIDENCIA DELICTIVA MARZO 2024.pdf
REPORTE DE INCIDENCIA DELICTIVA MARZO 2024.pdfREPORTE DE INCIDENCIA DELICTIVA MARZO 2024.pdf
REPORTE DE INCIDENCIA DELICTIVA MARZO 2024.pdf
 
17 PRACTICAS - MODALIDAAD FAMILIAAR.docx
17 PRACTICAS - MODALIDAAD FAMILIAAR.docx17 PRACTICAS - MODALIDAAD FAMILIAAR.docx
17 PRACTICAS - MODALIDAAD FAMILIAAR.docx
 
CUESTIONARIO A ADICCION A REDES SOCIALES.pdf
CUESTIONARIO A ADICCION A REDES SOCIALES.pdfCUESTIONARIO A ADICCION A REDES SOCIALES.pdf
CUESTIONARIO A ADICCION A REDES SOCIALES.pdf
 
HABILESASAMBLEA Para negocios independientes.pdf
HABILESASAMBLEA Para negocios independientes.pdfHABILESASAMBLEA Para negocios independientes.pdf
HABILESASAMBLEA Para negocios independientes.pdf
 
El Teatro musical (qué es, cuál es su historia y trayectoria...)
El Teatro musical (qué es, cuál es su historia y trayectoria...)El Teatro musical (qué es, cuál es su historia y trayectoria...)
El Teatro musical (qué es, cuál es su historia y trayectoria...)
 
Ivu- taller de diseño arquitectonico l , adicion y sustraccion de cubos,
Ivu- taller de diseño arquitectonico l , adicion y sustraccion de cubos,Ivu- taller de diseño arquitectonico l , adicion y sustraccion de cubos,
Ivu- taller de diseño arquitectonico l , adicion y sustraccion de cubos,
 
2024 2024 202420242024PPT SESIÓN 03.pptx
2024 2024 202420242024PPT SESIÓN 03.pptx2024 2024 202420242024PPT SESIÓN 03.pptx
2024 2024 202420242024PPT SESIÓN 03.pptx
 
Croquis de riesgo de trabajo gasolinera.pdf
Croquis de riesgo de trabajo gasolinera.pdfCroquis de riesgo de trabajo gasolinera.pdf
Croquis de riesgo de trabajo gasolinera.pdf
 

Estados imposibles y como evitarlos

  • 1. Estados Imposibles (Y como evitarlos) Juan Ignacio Rodrígue de León @jileon
  • 2.
  • 3.
  • 4.
  • 5. De que va  Qué son los estados imposibles y por qué deberíamos evitarlos  Ejemplos de estados imposibles y como evitarlos  Enlaces y resumen
  • 6.  Make Invalid States Unrepresentable Art by Maomi - https://www.pinterest.com/pin/565905509422569311/
  • 7. Principio de diseño  Suele usarse para los tipos de datos, pero se aplica a Estructuras, bases de datos, etc.  La idea es reducir o eliminar los estados en los que pueden estar los datos, idealmente haciendo imposible representar estados inválidos
  • 8. Para campos estado Obviamente es aplicable cuando tenemos codificado un estado directamente. Por ejemplo, supongamos un sistema de publicaciones con tres estados posibles: 🔘 En preparación 🔘 En borrador 🔘 Publicado
  • 13.
  • 14. No, es broma  El estado no se refiere solo a estos estados especificos, cualquier configuración de datos tiene un estado  Vamos a ver otro ejemplo en que no hay un estado explicito, pero nuestra elección de la estructura de datos implica un estado
  • 15. Periodos contiguos de tiempo  Vamos a representar una serie de periodos contiguos en el tiempo  Por ejemplo, en una aplicación que me permita monitorizar en todo momento lo que estoy haciendo (o dejndo de hacer)
  • 17. Pero... Permite representar estados imposibles (En este caso, no deseados)
  • 20. Eliminar redundacia  Podemos hacer que sea imposible representar periodos con huecos y/o que se superpongan  Similar a normalizar una base de datos: Eliminar la redundacia
  • 21. Eliminar fecha final  La marca de final de un periodo es redundante con la de inicio del siguiente  Así que solo necesitamos una única fecha, la de inicio. El final está definido por el inicio del siguiente periodo
  • 23. Ventajas Podemos ver algunas ventajas de esta representación analizando algunas de las operaciones que podríamos hacer
  • 24. Dividir un periodo  Primer caso:  Hacer ajustes en el periodo anterior  Insertar un nuevo periodo (posiblemente consultando el periodo siguiente)  Verificar las restricciones impuestas  Segundo caso:  añadir una fecha el conjunto
  • 25. Vale, pero ...  Yo sigo necesitando trabajar con periodos, con su inicio y final (Por ejemplo, porque tengo código ya funcionando que usa ese convenio)  Resulta trivial proyectar la secuencia de fechas a esta forma  Mientras la representación subyacente siga siendo una lista de fechas, las restricciones de los periodos siempre se cumplirán
  • 28. Clases y Objetos Vamos a representar un semáforo en un cruce
  • 30. My work here is done
  • 35. Resumen  Conviene echar una pensada sobre los estados y ver si podemos representar estados imposibles, y en ese caso, intentar eliminar esa posibilidad  Cualquier conjunto de datos interrelacionados son un estado  La representación de un objeto “real” no tiene por que seguir su estructura “fisica”
  • 36. Enlaces  Charla en YouTube Making Impossible States Impossible por Richard Feldman https://www.youtube.com/watch?v=IcgmSRJHu_8  Artículo de Kevin Mahoney Applying "Make Invalid States Unrepresentable" https://kevinmahoney.co.uk/articles/applying-misu

Notas del editor

  1. Suponiemos que los estados son excluyentes
  2. Si, claro, esto no deberia pasar nunca, bla, bla, bla...
  3. No váłido para estados superpuestos ni estados cuanticos no colapsados. Consulte con su médico para posibles contraindicaciones y tratamiento. Solo con receta médica,