A questão não é sobre “deixar o código elegante” no sentido estético ou sofisticado. É sobre deixar ele preparado pra mudar sem virar um campo minado.
No caso do Strategy, a ideia é simples: quando surge um novo cenário, você adiciona uma nova classe. Não precisa tocar nas outras. Não precisa abrir aquele if/else gigante, nem arriscar quebrar o comportamento de casos que já funcionam.
Já com if/else, toda vez que aparece uma nova variação, você tem que entrar no mesmo bloco de código, mexer num switch que cresce, revisar dependências… e esse acoplamento vai só piorando.
E isso afeta diretamente a manutenção.
Inclusive pro júnior que você citou — porque ele vai entender muito melhor um código separado por responsabilidade clara, do que um monolito de if/else que tenta cobrir todos os cenários.
Código simples e manutenível não significa “tudo em um lugar só”.
Significa “fácil de entender, mudar e testar sem medo”.
Valeu demais por levantar o ponto e contribuir com a discussão. É esse tipo de troca que melhora o código e a cabeça da galera. 👊🏼