En computación, el antipatrón de diseño lava flow o lava seca ocurre cuando un software es entregado antes de ser completado o antes de ser completamente probado y al ser expuesto, ya no es posible cambiar sus características, como cuando un flujo de lava se seca por fuera.
El antipatrón flujo de lava se encuentra comúnmente en los sistemas que inicialmente tenían como fin la investigación, pero que se acabaron produciendo. Se caracteriza por los trozos de código (flujos de lava) de versiones anteriores que quedaron esparcidas por el código de la aplicación, y ahora, se encuentran inamovibles (flujo de lava seco y endurecido) ya que nadie recuerda muy bien para que sirven o si se utilizan en el código.
Este es el resultado de un desarrollo previo en el que durante la fase de investigación, los desarrolladores probaron varias formas de resolver un problema, por lo general, en algún tipo de “carrera” para emitir algún tipo de demostración, provocando esto que creasen un código mal estructurado ( en forma de Código spaghetti) y mal documentado.
/**
*
* @author Empresa Ficticia
*
*/
public class Antigua {
/**
* Cuando me encontré este método no tenía javadoc.
* Creo que lo hizo Pedro, pero no estoy muy seguro, además ya no está en la empresa.
* No se muy bien si lo estamos utilizando, pero parece ser un método importante ya que tiene muchas
* líneas de código así que es mejor que nadie lo toque.
* El nombre tampoco ayuda a entenderlo
*/
public void hacerAlgo(){
// Infinitas líneas de código
// ....
// ....
// ....
// ....
// ....
// FIN
}
}
El resultado del Flujo de Lava es muchos fragmentos de código, clases inexplicables y procedimientos que no están relacionados con el resto del programa. De hecho, muchos de esos trozos tienen una apariencia tan complicada que hace que parezcan importantes.
Estos códigos no suelen ser analizados debido al gran coste que tiene su análisis y verificación. Realmente en la práctica la verificación y la prueba rara vez son posibles.
Una manera de evitar el lava Flow es seguir un desarrollo estructurado y documentado.
Cuando el código está en continuo cambio es necesario quitar las partes desactualizadas para evitar código muerto.
Una vez aparece este antipatrón, la solución es realmente costosa ya que es difícil saber cuales son los componentes que se utilizan en un código que apenas conoces.
No siempre es un mal desarrollo seguir una estructura poco documentada y no pensada para la gestión. En pequeña escala suele utilizarse este tipo de mecanismo para el desarrollo y la investigación ya que permite ir de una manera más rápida.