L'antipattern "Lava Flow" (lava solidificata) è una problematica legata ad un'inappropriata analisi del codice precedentemente sviluppato, che a volte si preferisce pensare come ad una roccia granitica di lava solidificata, da non poter scalfire. Un'espressione (premonitrice) di chi sta per incorre in questo antipattern è: «Se una parte di codice è poco chiara, meglio utilizzarla così com'è ... non facciamoci troppe domande».
Contesto
Ogni programmatore, prima o poi, si trova a dover modificare o aggiornare del codice scritto da altri. In questo caso, è sempre essenziale analizzare la classe in oggetto, e pianificare accuratamente tutte le operazioni da effettuate. Un buon sviluppatore, dovrebbe intervenire diligentemente, con coscienza e professionalità.
Nulla dovrebbe essere lasciato al caso, ed eventuali "problemi" dovrebbero essere evidenziati ed affrontati con serenità e in maniera adeguata. Ma cosa succede se ci si trova di fronte a porzioni di codice "misteriose"? che sembrano impossibili da comprendere?. La tentazione, che spesso diventa abitudine, è di lasciar tutto così com'è, pensando, in questo modo, di risparmiare tempo e denaro.
Ignorare un problema, tuttavia, non è mai la soluzione migliore, e il non intervenire, comporta un ulteriore aggravamento della situazione. L'affermare che non si può avere nessuna responsabilità su codice scritto da altri, non può esser un alibi, od una scusa valida per non cercare un adeguato rimedio. Un programmatore non sviluppa solo codice ma anche soluzioni.
Affrontare un problema non è mai una perdita di tempo, ma è il primo passo per ottenere un prodotto di qualità. L'antipattern Lava Flow si manifesta quando ci si imbatte in frammenti di codice poco comprensibili ma, comunque, ormai parte integrante dell'intero sistema.
Cause
Le cause alla base di questo antipattern sono:
- Assenza di una qualsiasi forma di documentazione
- Codice inizialmente sperimentale è divento codice esecutivo
- Viene prodotto ed inserito codice non completo
- Assenza di un adeguato piano architetturale
Sintomi
Gli elementi che permettono d'individuare questo antipattern sono:
- Fase di manutenzione particolarmente costosa
- Lo stesso bug è presente in più classi nonostante le correzioni apportate
- Fase di correzione degli errori molto onerosa
Conseguenze
Le conseguenze di tale antipattern sono:
- Inutile utilizzo di risorse
- Presenza di frammenti di codice che non si integrano col resto del sistema
- Difficoltà nell'analizzare e testare il codice
- Il codice assume un ruolo "irremovibile"
- Le classi rischiano di diventare delle "scatole misteriose"
Soluzione
Per evitare d'incorrere in questo antipattern si possono adottare degli accorgimenti:
- Analizzare in maniera accurata e precisa le diverse attività del sistema, facilità il riconoscimento di codice "inutile"
- Studiare e comprendere le funzionalità dei restanti componenti (legati al "codice solidificato") può diventare essenziale per scoprire il funzionamento del "lava flow"
- Rimuovere il codice "misterioso" e analizzare i comportamenti del sistema