jueves, 30 de junio de 2016

[RETURN TO BASICS] Modificando en un solo lugar el codigo a través de la asignación de variables

La refactorización (del inglés refactoring) es una técnica de la ingeniería de software para reestructurar un código fuente, alterando su estructura interna sin cambiar su comportamiento externo.  (Extraído de wikipedia)

Esta técnica establece la forma de realizar cambios que mejoran a lo interno el código sin afectar su comportamiento externo, con el objetivo que el código sea mas fácil de cambiar y entender.

Este código está escrito en C# y es una solución de granja de SharePoint.

A continuación un segmento de código que evaluaremos en este caso:

 public string ObtenerLeyendaMaterialEstudioDerechosReservados()
        {
            var valorRetornado = _configuracionRepositorio.ObtenerConfiguracionPorId(_configuracionAplicacion.LeyendaMaterialEstudioDerechosReservados);

            if (valorRetornado != null) return valorRetornado.Valor;
            _configuracionRepositorio.CrearLlave(_configuracionAplicacion.LeyendaMaterialEstudioDerechosReservados);
            valorRetornado = _configuracionAplicacion.LeyendaMaterialEstudioDerechosReservados;

            return valorRetornado.Valor;

        }

A primera vista podríamos valorar que no requiere ninguna mejora y que lo que hace básicamente es obtener un valor y validar si es nulo crear este valor para luego retornarlo.  Pero cuadno el código se repite hay una oportunidad de mejora siempre dentro del código.

Si observamos detenidamente hay una referencia que se repite 3 veces y es la siguiente:

_configuracionAplicacion.LeyendaMaterialEstudioDerechosReservados

Y si por algún motivo necesitamos cambiar esta referencia tendriamos que modificar 3 líneas de código.  Pero el número de veces hacerlo no esta tan grande, pero el error si puede suceder si no cambiamos las 3.  

Entonces vez de cambiarla 3 veces podemos asignarla a una variable y luego reemplazar esta variable donde hace referencia por lo que si la referencia cambia solo la cambiamos una vez de la siguiente forma:

public string ObtenerLeyendaMaterialEstudioDerechosReservados()
        {
            var leyenda _configuracionAplicacion.LeyendaMaterialEstudioDerechosReservados;
            var valorRetornado = _configuracionRepositorio.ObtenerConfiguracionPorId(leyenda);

            if (valorRetornado != null) return valorRetornado.Valor;
            _configuracionRepositorio.CrearLlave(leyenda);
            valorRetornado = leyenda;

            return valorRetornado.Valor;

        }

Y eso es todo amigos, por esta vez.  No solo es bueno tener buenas herramientas como Visual Studio y componentes de terceros como RSharper sino importante que escribamos código legible y que sea fácil de mantener.

Code4Fun!,

Juan Manuel Herrera Ocheita 

No hay comentarios.: