Por que em algumas situações if's são considerados ruins?

Em certas situações, o uso excessivo de if’s pode levar a um código complicado e difícil de manter. Isso ocorre porque, à medida que o número de if’s aumenta, a lógica do programa se torna mais complexa e difícil de acompanhar. Além disso, ao adicionar novas funcionalidades ou fazer alterações, cada novo if pode exigir uma nova condição, levando a um código inchado e difícil de depurar.

Um exemplo comum é o uso extensivo de if’s para verificar valores de um enum. Digamos que você tenha um enum que represente várias cores diferentes. Se você utilizar if’s para todas as verificações de cores, o código será facilmente preenchido com várias condições if, o que dificulta a leitura e a manutenção.

Em vez disso, é recomendável utilizar técnicas de polimorfismo, como o padrão Strategy ou o padrão State, que permitem separar a lógica condicional do código principal. Essas abordagens permitem que você escreva código mais modular e flexível, garantindo uma melhor manutenibilidade e extensibilidade do sistema.

Por exemplo, em vez de usar if’s para verificar as diferentes cores, você pode criar uma interface com um método “aplicarCor”, que cada cor concreta implementa de forma diferente. Isso permite que você trate cada cor separadamente, sem a necessidade de if’s para verificar enum’s.

Portanto, embora if’s possam ser úteis em certas situações, é importante ter cuidado ao usá-los e procurar maneiras de simplificar a lógica do programa, evitando assim a complexidade desnecessária.