In questi giorni sto leggendo un libro molto bello, dal titolo Refactoring to Patterns. A parte l'interesse suscitato dal tema stesso, ed il bel taglio dato da Joshua Kerievsky, l'autore, che ne fa l'ideale seguito per chi a letto Design Pattern e Refactoring (entrambi, come questo, nella lista dei libri da leggere), ho trovato un'altra bella analogia che aiuta a capire perchè è necessario fare refactoring.
Se vi state chiedendo perchè mi sta tanto a cuore questa faccenda delle analogie, è presto detto: le situazioni per me più difficili da affrontare non riguardano la parte tecnica, dato che, normalmente, l'importanza del refactoring (e più in generale di un buon design) è chiara a tutti coloro che lavorano con passione nel campo informatico, ma è la parte di spiegazione delle tempistiche di sviluppo e di project management che mi più è difficile. Ho infatti la "brutta" tendenza a cercare di rendere partecipe anche i vari commitenti del progetto che normalmente non sono affatto informatici e che hanno (quasi sempre) l'unico interesse nel ridurre al minimo costi e tempi di sviluppo. Questo mi porta a cercare di spiegare il perchè ed il percome di scelte e necessità che, ad una persona non tecnica, sembrano solamente "eccessive e dispendiose pignolerie, tanto il software funziona lo stesso".
Una analogia, come quella che vi descriverò tra poco, è sempre molto utile a rendere le cose meno fumose e molto più tangibili. Il libro in questione, riprendendo ed espandendo l'idea di Ward Cunningam, descrive il processo di refactoring come un'analogia finanaziaria. Il tutto è basato sul concetto di Design Debt, ossia un "debito" che si accumula nel codice ogni qualvolta questo è duplicato, poco chiaro o troppo complesso.
Se i debiti non vengono esititi subito, questi dovranno essere ripagati con gli interessi nel tempo; più passerà il tempo più i debiti diveranno grossi. Se si continua su questa strada, a lungo andare, il debito non potrà più essere ripagato, in quanto troppo grosso.
Bello, non trovate?
mmm...sto realizzando che il numero di Analogie è piuttosto alto....credo che sia ora di aprire una pagina sul Wiki!