domingo, 24 de octubre de 2021

La regla del Boy Scout


 
Los Boy Scouts tienen una regla sobre el lugar donde acampan, siempre hay que dejar la zona del campamento en mejor estado de como se encontró al llegar.

Si esto lo extrapolamos al mundo de la Calidad del Software, se podría decir que siempre que realicemos cualquier modificación intentemos mejorar el código que nos encontramos.

Todos los que llevamos tiempo programando sabemos que con el paso del tiempo, si estamos evolucionando un proyecto el código se va deteriorando. La culpa de esto normalmente es nuestra (de los desarrolladores), que por diversas causas (presión, incidencias bloqueantes,...) empezamos a hacer que el código se degrade.

Si conseguimos aplicar esta regla, podremos mejorar un poco la calidad de nuestro software. Por supuesto esto solo es posible si no estamos trabajando bajo presión, y es posible dedicar un poco de tiempo a realizar estas mejoras.

Os voy a poner un pequeño ejemplo a mejorar. Supongamos que tenemos la siguiente función:

public boolean restoreFilters()
{
	if (filter.status!=filter.InitialState)
	{
		filter.restore();
	}        
	return filter.status==filter.InitialState;
}

¿Hay algo que no os cuadre?

En teoría se encarga de restaurar unos filtros a su estado inicial, pero parece que por alguna razón ahora también comprueba si los filtros se encuentran en su estado inicial.

El Principio de Responsabilidad Única nos dice que una función deber hacer una sola cosa (y hacerla bien).

Una posible mejora sería dividir la función en dos:

public void restoreFilters()
{
	if (filter.status!=filter.InitialState)
	{
		filter.restore();
	}        
}

public boolean checkFiltersInitialState()
{    
	return filter.status==filter.InitialState;
}

Después de esto tendríamos que buscar dónde se llama a la primera función, y ver cuando se necesita comprobar el estado de los filtros para adaptar estos cambios.

Con esto habríamos aplicado la regla del Boy Scout, y dejaríamos el código un poco mejor que en el estado inicial.

Nos vemos pronto.


Imagen inicial del  libro "Boy Scout Handbook"