Refactoring

For me the most striking part about refactoring is its snowball effect.

As I change the code in order to make its intent more clear, I get a better understanding of what it is supposed to do and where the multiple responsibilities belong. As I progressively remove the noise, unnoticed shortcomings start becoming evident. This new knowledge in turn, provides insights for further improvements.

So, refactoring is not an event but a process of small, iterative improvements which add up and compound as time progresses.