Clean Code - Error Handling

19
Clean Code – Error Handling Alejandro Bermúdez Holguín 16 Feb 2016

Transcript of Clean Code - Error Handling

Page 1: Clean Code - Error Handling

Clean Code – Error HandlingAlejandro Bermúdez Holguín16

Feb 2016

Page 2: Clean Code - Error Handling

Manejo de errores disperso

Muchos códigos están completamente dominados por el manejo de errores.

No significa que esté mal hacer manejo de errores, sino que es imposible ver qué hace el código si el manejo de errores está disperso.

Page 3: Clean Code - Error Handling

El manejo de errores es IMPORTANTE, pero si oscurece la

lógica, está INCORRECTO.

Page 4: Clean Code - Error Handling

Usar excepciones en lugar de códigos de retorno

En el pasado habían muchos lenguajes que no tenían excepciones.

Las técnicas para manejar y reportar errores eran limitadas, comúnmente se usaba:

Banderas de error Retornar un código de error.

Page 5: Clean Code - Error Handling

Ejemplo Manejo de errores por log.

Page 6: Clean Code - Error Handling

Ejemplo Manejo de errores por excepciones

Page 7: Clean Code - Error Handling

Escribe primero try-catch-finally

Las excepciones definen un alcance.

El código se ejecuta en la porción try, se indica que el código puede abortar en cualquier punto y resumirse en el catch.

Page 8: Clean Code - Error Handling

Escribe primero try-catch-finally

El try se puede entender como transacciones.

El catch deje dejar el programa en un estado consistente sin importar

qué pase en el try.

El finally debe realizar tareas que deben ser

ejecutadas independientemente del comportamiento

de errores.

Page 9: Clean Code - Error Handling

Escribe primero try-catch-finallyEmpezar con pruebas unitarias en códigos que posiblemente arrojen una excepción es una buena práctica.

Método creado:

Page 10: Clean Code - Error Handling

Escribe primero try-catch-finally

El test anterior falla debido a que no arroja una excepción, ahora:

Page 11: Clean Code - Error Handling

Escribe primero try-catch-finallyCon la excepción que necesitamos, hacemos un refactor del código.

Page 12: Clean Code - Error Handling

Proporcionar un contexto con excepciones

Crea mensajes de error informativos, y pásalos con tus excepciones.

Menciona la operación que falló y el tipo de falla.

Si se está usando logging en tu aplicación, añade suficiente para ser capaz de hacer un seguimiento del error en el catch.

Page 13: Clean Code - Error Handling

Definir clases de excepción en función de las necesidades de la persona que llama

Las excepciones se pueden clasificar por su fuente o su tipo:

Fallas de dispositivo Fallas de red Errores de programa

Page 14: Clean Code - Error Handling

Ejemplo simplificación

Contiene duplicados

Page 15: Clean Code - Error Handling

Ejemplo simplificaciónLa clase LocalPort se encarga del manejo de excepciones

Page 16: Clean Code - Error Handling

No retornes nullEjemplo:

Page 17: Clean Code - Error Handling

No retornes null – ejemplo 2

Cambiando esto:

Page 18: Clean Code - Error Handling

ConclusiónEl código limpio es legible, pero debe ser también robusto.Podemos escribir código limpio y robusto si vemos el manejo de errores como un asunto separado.Algo que es visible independientemente de nuestra lógica principal.

En la medida que somos capaces de hacer eso, se puede razonar sobre ello de manera independiente, y podemos hacer grandes avances en la mantenibilidad de nuestro código.

Page 19: Clean Code - Error Handling

Muchas Gracias.