Receber um sistema com 10 anos de história e a missão de modernizá-lo sem parar a operação é um dos desafios mais delicados do desenvolvimento.

Regra #1: Entenda Antes de Tocar

Antes de refatorar uma linha, passo pelo menos uma semana apenas lendo e mapeando. Identifico pontos de entrada, dependências e efeitos colaterais escondidos.

Técnica: Strangler Fig Pattern

O Strangler Fig é minha abordagem favorita: criar o código novo ao lado do antigo, redirecionar o tráfego gradualmente, e eventualmente remover o legado quando o novo está estável.

// Legado
function getUser($id) {
    return mysql_query("SELECT * FROM user WHERE id=$id");
}

// Novo — coexiste durante a transição
class UserRepository {
    public function findById(int $id): ?User {
        return $this->db->query('SELECT * FROM users WHERE id = ?', [$id]);
    }
}

A chave é nunca fazer uma "grande reescrita". Pequenos passos verificáveis são o único caminho seguro.