Executando verificação de segurança...
4

Dificilmente um desenvolvedor júnior em início de carreira vai entender ou saber quando aplicar padrões de projeto. A leitura de um simples if/else é, de fato, muito mais direta do que ter que navegar por várias classes em um projeto extenso.

Infelizmente, é comum ver desenvolvedores implementando padrões complexos sem necessidade, muitas vezes para inflar o próprio ego. Eles tentam prever o futuro da aplicação, ignorando princípios mais relevantes como YAGNI e KISS. Muitas implementações nascem com a justificativa de que "no futuro poderemos precisar disso", o que leva à adoção desnecessária de padrões.

Eu mesmo já vi situações extremas, como a criação de uma factory para instanciar um command, mesmo quando havia apenas um único tipo de retorno, ou o uso de strategy para resolver o que poderia ser um simples if. Isso acontece, em parte, porque muitos artigos e tutoriais abordam esses temas de forma superficial, com exemplos rasos. Um desenvolvedor iniciante, então, acaba acreditando que essas implementações são regras absolutas, carregando essa ideia para sua carreira.

A chave é entender que padrões de projeto são ferramentas para resolver problemas específicos, não um fim em si mesmos. A simplicidade e a funcionalidade devem sempre vir em primeiro lugar.

Carregando publicação patrocinada...
1

De fato. Não existe bala de prata, e tentar prever o futuro inteiro da aplicação quase sempre leva a overengineering.
Mas vale pensar também pela ótica dos testes: cada if novo que você adiciona duplica a quantidade de caminhos que precisam ser cobertos. A complexidade ciclomatica cresce rápido, e logo aquele método “simples” vira um Frankenstein cheio de exceções e casos especiais.
Quando você separa o comportamento em classes isoladas (via Strategy, por exemplo), cada cenário pode ser testado de forma independente, sem precisar montar todo o estado global do mundo pra testar um único fluxo.
No fim, o bom senso de quando aplicar o quê vem mesmo com a experiência. A gente erra forçando padrão onde não precisa, e também erra mantendo tudo junto por medo de complicar.
O ponto é: não dá pra nivelar por baixo.
Buscar simplicidade não pode virar desculpa pra empilhar if até ninguém mais querer mexer no código.