I boy scout americani hanno una regola/principio, lasciare il campo più in ordine di come lo si ha trovato inizialmente. Lo stesso principio è stato ripreso dallo “Zio Bob” Robert C. Martin il quale lo ha applicato al software nel seguente modo:

Lasciate il codice più pulito di come lo avete ritrovato!

Molte volte ci capita di riguardare parti del codice scritto in passato ed innorridire per la sua scarsa qualità! Quante volte vi sarà capitato?

La tendenza del programmatore e di volere riscrivere quella parte il più in fretta possibile per non rivederlo più, ma riscriverlo potrebbe avere un costo eccessivo, modificare del codice esistente potrebbe introdurre nuovi bug su parti esistenti, sopratutto se fatto di fretta. Il management potrebbe non approvare un budget per questa fase perchè per loro il risultato finale è attualmente funzionante! Loro non vedono questo problema mentre per noi developer diventa un peso, un pensiero fisso (tanto da non dormire più la notte :P) Ecco che la “Boy Scout Rule” ci viene in soccorso in questo caso.

Questo significa che devo rinunciare all’ossessione di farlo tutto in una volta sola, ma bisogna fare uno sforzo quotidiano con l’obbiettivo di “smantellarlo” progressivamente. È sufficiente mettere dei commenti sulle modifiche che si vogliono applicare in futuro, come ad esempio:

// ToDo : Convertire la sequenza di loop e if in query Linq
// ToDo : Rinominare il metodo in ... 
// ToDO : Rinominare property in ...

Se si applica la “Boy Scout Rule” quotidianamente e diventa un principio da seguire a livello di team, si migliora progressivamente il design, si evita il degrado del software col passare del tempo (entropia del software) e la nostra mente si libera da questo peso aumentando la nostra produttività!!! Per noi Dev è un fattore psicologico, sapere che lo sistemeremo anche se a lungo termine ci rassicura. Sono sufficienti anche piccoli refactoring come il rename dei campi e metodi, oppure splittare un metodo lungo in due più piccoli. L’importante non è la quantita di refactoring che si effettua ma mentenere la costanza!

Links

http://programmer.97things.oreilly.com/wiki/index.php/The_Boy_Scout_Rule http://deviq.com/boy-scout-rule

Image Zach Betten