No fundo no fundo todo código é um robô. Ele não faz nada sem instruções. Ele pode levar mais ou menos tempo, dar voltas ou ir direto, repetir ações indefinidamente ou ter propósito claro, para ele dá tudo no mesmo. A refatoração prefere menos tempo, menos voltas e menos indefinições.

O objetivo principal da refatoração é reduzir a complexidade de algum código que já esteja funcionando. Refatorar não é consertar bugs, programar novas funcionalidades ou otimizar o código.

A refatoração se concentra em três técnicas principais:

  1. técnicas que permitem maior abstração
  2. técnicas que resultam em uma melhor componentização
  3. técnicas que melhoram a nomenclatura e a localização de códigos

Um software não precisa de refatoração para existir; ele só precisa ser refatorado para crescer.