Quando coloco um problema, principalmente quando é de natureza complicada, tento dedicar algum tempo para pensar sobre a abordagem que vou adotar para resolver o problema. Apesar disso, o que acontece com frequência é que, ao programar a solução, começo a pensar nos detalhes do problema que perdi e ajusto o código de acordo.
O que resulta é uma bagunça de código que precisa ser refatorada.
Quero "refatorar a medida que for", mas, embora pareça fácil o suficiente, tenho muita dificuldade em fazê-lo. Quando os detalhes que eu perdi são pequenos, é tentador fazer uma pequena atualização no meu design, em vez de apagar o que já escrevi e escrevê-lo da maneira que deveria ser.
Parece uma pergunta com uma resposta óbvia, mas existem técnicas a serem usadas para melhor "refatorar conforme você avança"? Sei que esse é um bom princípio, mas falho repetidamente.