Casa > P > Porque É Que Escrever Demasiadas Declarações Condicionais É Considerado Como Uma Má Prática De Programação?

Porque é que escrever demasiadas declarações condicionais é considerado como uma má prática de programação?

Se é a opção mais eficiente, então não é uma má prática. Fazer qualquer coisa que tenha uma solução mais simples e elegante prontamente disponível é uma má prática.

Neste caso, um switch gigante pode muitas vezes ser substituído por uma interface ou permitir que uma classe tenha sua própria responsabilidade, etc.

Por exemplo, se você tiver algo como isto:

main-qimg-3eb08fa3b7a2e9caa2cfb2ccff1e76e2

Isto irá funcionar. O código será um pouco robusto desde que os valores só sejam adicionados e não editados, e na verdade é até bastante eficiente, já que as comparações de bits levam praticamente tempo zero. Mas isto vai ficar fora de controle, difícil de navegar, e você já tem que definir estas classes de carros de qualquer maneira.

Em vez disso, vamos começar com algo como isto:

main-qimg-338a1579e830ee9fe9027cf4f8fd19b8

Again, provavelmente tivemos isto de qualquer forma, apenas sem o método do númeroOfCylinders, e por isso agora o nosso primeiro método é assim:

main-qimg-4c959dc0d3d1f01fcee0a7f33dede731

Agora imagine por um momento que somos uma loja nacional de autopeças, e temos literalmente milhares de carros de várias marcas, modelos, guarnições, etc. Que se/else se tornaria um enorme monstro, impossível de ler, extremamente difícil de adicionar ou remover com segurança, etc.

Então, novamente, nem sempre é uma má prática, e às vezes vamos precisar de um grande interruptor ou algo do género, mas normalmente há uma maneira mais fácil de nos escondermos lá.

EDIT: Há muitos comentários sobre ter um número extremamente grande de combinações de carros (potencialmente milhões ao longo da história) e classes de implementação de carros falhando aqui. Claro que a um certo ponto, as classes não vão funcionar, e você estaria armazenando arquivos planos em um banco de dados e usando um acessor.

A minha resposta tinha a intenção de mostrar a armadilha de usar declarações condicionais muito longas, não como uma tentativa real de construir uma arquitetura de loja de auto peças. Se você trabalha em uma grande loja de autopeças, por favor não tome minha resposta simples como base da sua arquitetura de software :)

De Seroka

Porque é que a fugacidade, ou z, é sempre inferior a 1? :: Qual é a duração de vida de um tablet Samsung Galaxy?