manuel pijierro sa - @mpijierro · sobre el código limpio correcto simple testable extensible....
TRANSCRIPT
![Page 1: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/1.jpg)
Manuel Pijierro Sa - @mpijierro
![Page 2: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/2.jpg)
Sobre mi
@mpijierro
https://github.com/mpijierro
mandev.es/cv/
Reference Leader Software Development at S|ngular
https://medium.com/@mpijierro
Manuel Pijierro Sa
![Page 3: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/3.jpg)
Talk is cheap. Show me the code
Torvalds, Linux (25-08-2000)
Sobre la charla
![Page 4: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/4.jpg)
Sobre el código limpio
Correcto Simple
Testable Extensible
![Page 5: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/5.jpg)
Sobre el código limpio
No existe una definición exacta
Tiene algo de subjetivo
Proceso de mejora contínua
![Page 6: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/6.jpg)
Sobre el código limpio
"Code is like humor. When you have to explain it, it’s bad"Cory House, @housecor
"It is not enough for code to work"Robert C. Martin, @unclebobmartin
![Page 7: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/7.jpg)
Mantenibilidad
![Page 8: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/8.jpg)
Mantenibilidad
cost total = cost develop + cost maintain
Edward Yurdon & Larry L. Constantine: Structured Design: Fundamentals of a Discipline of Computer Program and Systems Designhttps://www.win.tue.nl/~wstomv/quotes/structured-design.html
![Page 9: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/9.jpg)
Mantenibilidad
cost maintain = cost understand + cost change + cost test + cost deploy
Edward Yurdon & Larry L. Constantine: Structured Design: Fundamentals of a Discipline of Computer Program and Systems Designhttps://www.win.tue.nl/~wstomv/quotes/structured-design.html
![Page 10: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/10.jpg)
Mantenibilidad
Alta mantenibilidadMejor software
Cambios en menos tiempo y menos recursosSoftware más barato
Software más competitivoProyectos y productos más competitivos
Empresas más solventes
![Page 11: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/11.jpg)
Mantenibilidad
LEGIBLE COMPRENSIBLE
Objetivos
![Page 12: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/12.jpg)
Programación Orientada a Objetos
Imagen de https://medium.com/@richardeng/a-simple-explanation-of-oop-46a156581214
![Page 13: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/13.jpg)
Programación Orientada a Objetos
Imagen de https://www.javatpoint.com/java-oops-concepts
![Page 14: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/14.jpg)
Programación Orientada a ObjetosClases
Definición de características y comportamiento
modelan objetos del mudo real y abstractos
![Page 15: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/15.jpg)
Programación Orientada a ObjetosObjetos
instancia de un clase
contienen sus atributos y comportamiento
siempre deben tener un estado válido
![Page 16: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/16.jpg)
Programación Orientada a ObjetosObjetos
- debe permanecer ocultoSobre el estado
![Page 17: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/17.jpg)
Programación Orientada a ObjetosObjetos
- no revelar los detalles de implementación- no revelar estructura interna
Sobre el estado
![Page 18: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/18.jpg)
Programación Orientada a ObjetosObjetos
- no usar “getters”Sobre el estado - porque revelan estructura interna y
decisiones de diseño.- porque tratamos a los objetos como
estructura planas de datos y no como objetos .
- porque la información pierde valor semántico.
![Page 19: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/19.jpg)
Programación Orientada a ObjetosObjetos
- no usar “getters”Sobre el estado
Object thinkingData thinking
https://www.yegor256.com/2014/09/16/getters-and-setters-are-evil.html
![Page 20: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/20.jpg)
Programación Orientada a ObjetosObjetos
- no usar “getters”Sobre el estado
Object thinkingData thinking
https://www.yegor256.com/2014/09/16/getters-and-setters-are-evil.html
![Page 21: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/21.jpg)
Programación Orientada a ObjetosObjetos
- Principio “Tell don’t ask”Sobre el estado
https://martinfowler.com/bliki/TellDontAsk.html
“Dime que hago, no me preguntes”
![Page 22: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/22.jpg)
Programación Orientada a ObjetosObjetos
- Principio “Tell don’t ask”Sobre el estado
- No volverse locos (getter erradicator)- Objetos intercambian información- Convertir getters en métodos semánticos que
devuelvan tipos concretoshttps://martinfowler.com/bliki/GetterEradicator.html
![Page 23: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/23.jpg)
Tipos de objetos
Imagen de http://time.com/3931946/lego-sustainable-materials/
![Page 24: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/24.jpg)
Tipos de objetos
- Servicios
- Entidades
- Value objects
- Domain events
- Event listener
- Dto’s
![Page 25: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/25.jpg)
Tipos de objetos
- Objetos que realizan una tarea o devuelven información
- Se instancian una vez y se utilizan muchas veces
Servicios
![Page 26: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/26.jpg)
Tipos de objetos
- Según el contexto- Servicios de aplicación- Servicios de dominio- Servicios de infraestructura
- Según el tipo de operación- Command: hacen una tarea- Query: obtienen información
Servicios
![Page 27: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/27.jpg)
Tipos de objetos
- Objetos que representan un concepto del dominio
- Tienen identidad inmutable -> son identificables
- Tienen un alto significado semántico
- Son objetos inmutables
- Ej: Usuario, Producto, Pedido
Entidades
![Page 28: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/28.jpg)
Tipos de objetos
- Objetos que representan un concepto general
- No tienen identidad. Definidas por su valor
- Son tipos complejos que pueden tener comportamiento
- Son objetos inmutables
- Son conceptos medibles, cuantificables o descriptores
- Ej: Fechas, precio de un producto, peso, altura, edad
Value object
![Page 29: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/29.jpg)
Tipos de objetosValue object
- Les da sentido a tipos primitivos- Los modela de acuerdo al dominio- Le da un comportamiento propio
![Page 30: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/30.jpg)
Tipos de objetos
- Objetos que notifican a otros servicios que algo ha
ocurrido en el modelo de escritura (command) dentro de
nuestro dominio.
Domain events
![Page 31: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/31.jpg)
Tipos de objetosEvent Listener
- Objetos que realizan tareas secundarias relacionadas con una tarea
principal.
- Suelen recibir como parámetro el evento al que están asociado.
![Page 32: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/32.jpg)
Tipos de objetosDTO’s
- Data Transfer Object
- Objeto que lleva datos entre procesos
- Únicamente encapsula información
- No tienen comportamiento asociado -> modelos anémicos
- Inmutables
![Page 33: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/33.jpg)
Creando objetos
![Page 34: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/34.jpg)
Creando objetosCreando servicios
Inyectar dependencias y configuración por constructor
![Page 35: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/35.jpg)
Creando objetosCreando servicios
![Page 36: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/36.jpg)
Creando objetosCreando servicios
Los argumentos del constructor deberían ser obligatorios
NO pasar argumentos con valor null
![Page 37: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/37.jpg)
Creando objetosCreando servicios
![Page 38: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/38.jpg)
Creando objetosCreando servicios
Únicamente usar inyección por constructor
NO utilizar setters
Servicios son inmutables
![Page 39: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/39.jpg)
Creando objetosCreando servicios
![Page 40: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/40.jpg)
Creando objetosCreando servicios
Haz todas las dependencias explícitas
Convierte llamadas estáticas en dependencias de objetos
![Page 41: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/41.jpg)
Creando objetosCreando servicios
![Page 42: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/42.jpg)
Creando objetosCreando servicios
Dependencias y configuración por constructor
Datos relevantes para la tarea como argumentos de métodos
![Page 43: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/43.jpg)
Creando objetosCreando servicios
¿Parámetro de constructor o parámetro de método?
¿Podríamos ejecutar este servicio en un proceso batch sin requerir su instanciación una y otra vez?
![Page 44: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/44.jpg)
Creando objetosCreando servicios
![Page 45: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/45.jpg)
Creando objetosCreando servicios
Dentro del constructor únicamente
- validar parámetros (aserciones)- lanzar excepciones si un parámetro es inválido- asignarlos a las propiedades
![Page 46: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/46.jpg)
Creando objetosResumen
- Inyectar dependencias y configuración por constructor
- Argumentos del constructor obligatorios- NO pasar argumentos con valor null- Dependencias explícitas- NO utilizar setters
- Convertir llamadas estáticas en dependencias de objetos
- Datos relevantes para la tarea como argumentos de métodos
- El constructor solo valida y asigna- Servicios inmutables
![Page 47: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/47.jpg)
Creando objetosInmutabilidad
- código predecible
- somos consciente del estado de nuestros objetos
- nos asegura que nuestro código no cambia
- si hay cambio de estado -> instanciamos un nuevo objeto
![Page 48: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/48.jpg)
Usando objetos
![Page 49: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/49.jpg)
Tipos de operaciones de los métodos
Usando objetos
COMMAND QUERY
Command/Query Separation
https://martinfowler.com/bliki/CommandQuerySeparation.html
![Page 50: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/50.jpg)
Tipos de operaciones de los métodos
Usando objetos
https://martinfowler.com/bliki/CommandQuerySeparation.html
command
query
![Page 51: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/51.jpg)
Obteniendo información con métodos query
Usando objetos
- Únicamente retornan información- No producen cambios en el estado observable del sistema - Devuelven un único tipo de dato específico- Idempotente- No exponen el estado interno -> no getters- Pueden encadenarse llamadas de métodos query
![Page 52: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/52.jpg)
Obteniendo información: sugerencia naming en métodos query
Usando objetos
- Empiezan por get…..
- Empiezan por find…..
- Retornan lo buscado- Lanzan una excepción
- Retornan lo buscado- Retornan alternativa vacía:
empty list, null object
![Page 53: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/53.jpg)
Cambiando el estado con métodos command
Usando objetos
- No retornan nada: return void- Limitar el alcance de un método command -> usar eventos - No idempotente- Si algo va mal -> lanza una excepción- Puede usar queries para recoger información y ejecutar su tarea
![Page 54: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/54.jpg)
Cambiando el estado: sugerencia naming en métodos command
Usando objetos
- Usar formas imperativas: “haz esto”, “haz aquello”- Normalmente: verbo + objeto a tratar- Indica que el cliente puede dar órdenes al objeto
![Page 55: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/55.jpg)
Usar eventos para realizar tareas secundarias
Usando objetos
- Buscar cumplir el Principio de Responsabilidad Única
- Diferenciar tarea principal del método de tareas secundarias
- ¿Tiene el nombre del método un ‘And’ que indique tareas adicionales?- ¿Todas las líneas del método contribuyen a la tarea principal?- ¿Podría hacerse en un proceso background?
![Page 56: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/56.jpg)
Usar eventos para realizar tareas secundarias
Usando objetos
¿Cómo limitamos el alcance de este método y cumplimos además el principio de responsabilidad única?
![Page 57: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/57.jpg)
Usar eventos para realizar tareas secundarias
Usando objetos
1) Creamos un objeto que refleje el evento que ha ocurrido en el sistema
![Page 58: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/58.jpg)
Usar eventos para realizar tareas secundarias
Usando objetos
2) Sustituimos el código original por la generación del evento
![Page 59: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/59.jpg)
Usar eventos para realizar tareas secundarias
Usando objetos
3) Creamos un listener que realice la tarea asociada al evento
![Page 60: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/60.jpg)
Command/Query en objetos
Usando objetos
COMMAND OBJECT
Command/Query Responsibility Segregation (CQRS)
QUERY OBJECT
![Page 61: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/61.jpg)
Aspectos del código que mejoran y facilitan su legibilidad y
comprensibilidad
![Page 62: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/62.jpg)
Sobre los nombres
![Page 63: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/63.jpg)
Evita nombres que no revelen la intención
Sobre los nombres
![Page 64: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/64.jpg)
Evita usar varias palabras para un mismo concepto
1) Sobre los nombres nombres
![Page 65: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/65.jpg)
Una palabra por concepto usando estándares y convenciones
Nombre de funciones
- add / remove - increment / decrement- begin / end - insert / delete- create / destroy - lock / unlock- first / last - get / set- show / hide - start / stop
Nombres de variables
- begin / end - first / last- locked / unlocked - min / max- next / previous - old / new- opened / closed - source / targe- up / down
1) Sobre los nombres
![Page 66: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/66.jpg)
Sobre los parámetros
![Page 67: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/67.jpg)
Usa operandos y no opciones
Sobre los parámetros
![Page 68: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/68.jpg)
Usa operandos y no opciones
Sobre los parámetros
![Page 69: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/69.jpg)
Objetos de dominio y ‘data clumps’ (value objects)
Sobre los parámetros
![Page 70: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/70.jpg)
Sobre los parámetrosObjetos de dominio y ‘data clumps’ (value objects)
![Page 71: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/71.jpg)
Sobre las condiciones
![Page 72: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/72.jpg)
Utiliza condicionales semánticos fáciles de leer y comprender
Sobre las condiciones
![Page 73: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/73.jpg)
Utiliza condicionales semánticos fáciles de leer y comprender
Sobre las condiciones
![Page 74: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/74.jpg)
Un solo nivel de indentación por método
Sobre las condiciones
![Page 75: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/75.jpg)
Un solo nivel de indentación por método
Sobre las condiciones
![Page 76: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/76.jpg)
Un solo nivel de indentación por método: cláusulas de guarda
Sobre las condiciones
![Page 77: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/77.jpg)
Un solo nivel de indentación por método
Sobre las condiciones
![Page 78: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/78.jpg)
Un solo nivel de indentación por método
Sobre las condiciones
![Page 79: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/79.jpg)
Aprovecha para contar una historia en cada método público...
Sobre las funciones
![Page 80: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/80.jpg)
Sobre las funciones...pero no cuentes historias de miedo
![Page 81: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/81.jpg)
Sobre las funcionesPequeñas, menos es más
![Page 82: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/82.jpg)
Sobre los principiosEvita las sorpresas: Principio de la Mínima Sorpresa
![Page 83: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/83.jpg)
Sobre los principiosEvita las sorpresas: Principio de la Mínima Sorpresa
![Page 84: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/84.jpg)
Sobre los principiosEvita las sorpresas: Principio de la Mínima Sorpresa
![Page 85: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/85.jpg)
Sobre los principiosEvita las sorpresas: Principio de la Mínima Sorpresa
![Page 86: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/86.jpg)
Sobre los principiosEvita las sorpresas: Principio de la Mínima Sorpresa
![Page 87: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/87.jpg)
Sobre los principiosEvita las sorpresas: Principio de la Mínima Sorpresa
![Page 88: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/88.jpg)
Sobre los comentariosEl código es el único que siempre dice la verdad
![Page 89: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/89.jpg)
Sobre los comentariosEl código es el único que siempre dice la verdad
![Page 90: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/90.jpg)
Sobre los comentariosEl código es el único que siempre dice la verdad
![Page 91: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/91.jpg)
SimetríaEl código debe parecerse en cualquier parte del proyecto
Simetría sintáctica
Simetría semántica
Simetría sistémica
![Page 92: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/92.jpg)
SimetríaSimetría sistémica
![Page 93: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/93.jpg)
SimetríaSimetría sistémica
![Page 94: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/94.jpg)
SimetríaSimetría en métodos
https://leanpub.com/object-design
![Page 95: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/95.jpg)
SimetríaSimetría en métodos: Pre-conditions check
- validamos todos los parámetros
- generan excepciones InvalidArgumentException cuando algo va mal
- podemos usar aserciones
- argumentos como value objects o entities ahorran validaciones
![Page 96: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/96.jpg)
SimetríaSimetría en métodos: Pre-conditions check
![Page 97: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/97.jpg)
SimetríaSimetría en métodos: failure scenarios
- se corresponden con errores funcionales normalmente generados por condiciones externas- generan excepciones de tipo runtime
![Page 98: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/98.jpg)
SimetríaSimetría en métodos: happy path
https://leanpub.com/object-design
![Page 99: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/99.jpg)
SimetríaSimetría en métodos: post-condition checks
https://leanpub.com/object-design
- comprobaciones y validaciones antes de hacer el return
![Page 100: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/100.jpg)
SimetríaSimetría en métodos: return
https://leanpub.com/object-design
- se realiza el return del método
- solo los métodos query deberían devolver algo
- mejor devolver tipos de datos que primitivas
- devolver únicamente un tipo de dato específico por método
![Page 101: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/101.jpg)
De tu parte queda...
Entrenar
![Page 102: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/102.jpg)
EntrenarConcentrarse
De tu parte queda...
![Page 103: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/103.jpg)
EntrenarConcentrarseSer consciente
De tu parte queda...
![Page 104: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/104.jpg)
EntrenarConcentrarseSer conscienteSer responsable
De tu parte queda...
![Page 105: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/105.jpg)
Bibliografía recomendada
![Page 106: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/106.jpg)
Bibliografía recomendada
![Page 107: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/107.jpg)
Ahora te toca a ti
¿preguntas? ¿comentarios? ¿sugerencias?
![Page 108: Manuel Pijierro Sa - @mpijierro · Sobre el código limpio Correcto Simple Testable Extensible. Sobre el código limpio No existe una definición exacta Tiene algo de subjetivo Proceso](https://reader036.vdocuments.us/reader036/viewer/2022063000/5f0e3bd87e708231d43e412d/html5/thumbnails/108.jpg)
Fin
Gracias por vuestra atención.