Refactoring–Extract Method para separar validaciones de operaciones

Existen casos en los que es conveniente extraer un bloque de código en un nuevo método por razones de validaciones de entrada. Es decir, queremos sepaar el código de validaciones de entradas del código que realiza propiamente las operaciones con estas. En algunos casos esto además puede traernos algunos beneficios de performance. Esto es más claro en los métodos recursivos. Para ilustrar esto pongamos como ejemplo al clásico método que calcula el Factorial de N de manera recursiva:

image

Aquí el problema está en que el parámetro ‘n’ se valida en cada llamada pero la realidad es que esto no debería ser así ya que si ‘n’ es válido en la primera llamada este va a serlo también en todas las sucesivas invocaciones que se hacen de manera recursiva. Por este motivo es conveniente separar las validaciones y extraer el cálculo del factorial para llevarlo a otro método como sigue:

image

No es la performance lo que interesa aquí sino la separación conceptual de las validaciones y las operaciones, el incremento de la performance es solo un producto derivado de haber hecho esto.

Sin categoría

2 thoughts on “Refactoring–Extract Method para separar validaciones de operaciones

  1. @Vicenç es una idea interesante, habría que ver cual sería la responsabilidad de esta y de la nueva clase que propones. Si la clase que contiene a este método se llamase Math, ¿Cómo debería llamarse la nueva clase?. Pienso que una de las responsabilidades de esta clase es calcular el factorial y por eso creo los 2 métodos deben pertenecer a la misma clase. No obstante me gustaría ver la implementación que propones.
    Saludos,.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *