Da un po' di tempo ormai ritengo di aver individuato uno stretto legame tra le attività di refactoring e quelle di commento del codice. Non so se questa sia la scoperta dell'acqua calda, ma ritengo comunque che sia utile rendere pubbliche queste mie impressioni.

Tutti siamo coscenti dell'importanza di commentare il codice, e molti ormai sono anche coscenti che il refactoring è una attività indispensabile, sia che si adotti un approccio agile (o acrobatico talvolta... ma questa è un'altra storia) sia che si usi una metodica più tradizionale. Mi capita sempre più spesso, quando scrivo il codice ad adottare la seguente procedura:

1) dopo una fase di analisi-design comincio a scrivere il codice
2) mano a mano che scrivo ovviamente cerco per quanto possibile di tenerlo ordinato, ma comunque non faccio lo schizzinoso. Mi concentro molto più sul problema che sulla forma
3) al termine delle modifiche apportate testo faccio i consueti test
4) infine inizio a mettere i commenti. Prima quelli XML, metodi, campi, classi, etc.. poi al'interno dei metodi isolo i blocchi logici e ci metto dei commenti che mi servono soprattuto per ricordare i motivi per cui il codice è scritto cosi

In quest'ultima fase, mettere i commenti mi fa ragionare su quanto ho fatto e immancabilmente mi porta a una forte attività di refactoring dalla quale ne esce un buon codice, ben commentato e quasi sempre anche delle semplificazioni che prendono in causa buona parte del codice preesistente. E' spesso in questa sede che ne escono design pattern, classi di utilità e quant'altro. L'attività di commento mi permette di prendere coscienza delle caratteristiche del codice che è stato scritto rivelando quello che anche un design molto approfondito probabilmente non avrebbe portato alla luce.

Se prima consideravo importante commentare il codice, oggi ritengo questa attività addirittura vitale.