4. ¿De qué vamos a hablar?
4
• Algunos de los problemas más comunes al desarrollar
software.
• Algunas prácticas para mejorar la calidad de nuestro software.
5. Algunos de los problemas más comunes al
desarrollar software
5
8. ¿Cómo podemos evitarlo?
• Acordar una guía de estilo para el código.
• Practicando Clean Code.
• Refactorizando nuestro código.
• Hablar en el idioma del negocio.
8
“Programa como si tuvieras que mantener ese código el resto de tu vida” - Yuriy Zubarev
11. ¿Cómo podemos evitarlo?
• Tener tests es indispensable.
• Unitarios
• Integración
• De extremo a extremo
• Programar en parejas
11
“Teniendo tests duermo más tranquilo por las noches” - Anónimo
19. CLEAN CODE - ¿QUÉ ES?
19
Es simple y directo.
Grady Booch.
Se puede leer.
Dave Thomas.
Lo ha escrito alguien al que le
importa.
Michael Feathers.
Hace lo que esperabas que haga.
Ward Cunningham.
Solo hace una cosa.
Robert C. Martin.
21. CLEAN CODE - ¿POR QUÉ?
21
• Fácil de leer.
• Fácil de cambiar en el futuro.
• Fácil de testear.
• Es más barato.
Pasamos más del 70% de nuestro tiempo leyendo código y solo un 30% escribiendo código.
25. REFACTORING - ¿QUÉ ES?
25
Refactorizar es el proceso de cambiar el código para hacerlo más
fácil de entender sin cambiar su comportamiento observable.
26. REFACTORING - ¿POR QUÉ?
26
• Mejora la lectura del código.
• Mejora el diseño.
• Facilita añadir nuevas funcionalidades.
• Es más barato.
A veces código que funciona y hace lo que tiene que hacer no es suficientemente bueno.
Cualquiera puede escribir código que entienda una máquina. Solo buenos desarrolladores
escriben código que entienden los humanos.
- Martin Fowler.
30. REFACTORING - SUGERENCIAS
30
• Nunca deberíamos refactorizar sin tests.
• No debemos separar la refactorización del código del proceso de desarrollo.
• Muchos IDEs/herramientas tienen opciones para refactorizar.
32. TEST UNITARIOS - ¿QUÉ ES?
32
Es una técnica para probar pequeñas partes de la aplicación en
aislamiento.
33. TEST UNITARIOS - ¿POR QUÉ?
33
• Permite probar partes de la aplicación.
• Incrementa la productividad al no perder tiempo ejecutando toda la aplicación.
• Son un arnés de seguridad para no romper las funcionalidades actuales
cuando se añade nuevo código.
• Documentan el comportamiento de la aplicación.
• Reduce el coste de la aplicación.
34. PARTES.
Preparar. Inicializar las dependencias y los objetos necesarios.
Actuar. Ejecutar el código que se quiere probar.
Afirmar. Afirmar que el resultado del código probado es el esperado.
CATEGORÍAS.
Estado.
Interacción.
REQUISITOS.
Fácil de escribir.
Legible.
Fallar solo por una razón.
Rápido.
TEST UNITARIOS - CARACTERÍSTICAS
34
36. TEST UNITARIOS - ADVERTENCIA
36
• Los tests unitarios por sí solos no garantizan el correcto comportamiento del
sistema.
• Es necesario añadir tests integración y otros tipos de tests para probar las
unidades en conjunto.
38. TEST DRIVEN DEVELOPMENT - ¿QUÉ ES?
Es una aproximación al desarrollo de software en el cual se
escriben los tests antes de escribir el código de producción.
38
39. TEST DRIVEN DEVELOPMENT - ¿POR QUÉ?
39
• Nos ayuda a descubrir la interfaz
pública de la funcionalidad que
vamos a desarrollar.
• Ayuda a mantener la implementación
simple.
• Refactoring seguro.
• Documentan el comportamiento de la
aplicación.
41. 1er requerimiento
Escribir una aplicación que salude a la persona que indiquemos. Por ejemplo, cuando la persona
se llama Mercedes la aplicación debería saludar "Hello, Mercedes".
2do requerimiento.
Dado que hay muchos usuarios que no incluyen el nombre queremos generar un saludo por
defecto. Por ejemplo, cuando el nombre no está incluido, la aplicación debería saludar "Hello, my
friend".
3er requerimiento.
Hay algunos usuarios que quieren que la aplicación grite. Por lo tanto cuando el nombre de la
persona sea en mayúsculas la aplicación debería saludar. Por ejemplo, cuando la aplicación ve
MARITZA debería de saludar "HELLO, MARITZA".
TEST DRIVEN DEVELOPMENT - EJEMPLO
41