Switch case: prós e contras

Li em uma revista específica que alguns autores consideram o switch case uma má-prática. Raramente implemento o switch, mas nunca o encarei como uma má-prática. Alguém poderia colocar alguns argumentos a favor e/ou contra essa cláusula?

valeuu

Eu acho que ele deveria ser é mais poderoso, como o “match/case” do Scala.

Como está, é um mero encapsulamento da instrução “tableswitch” ou “lookupswitch” da JVM.

entanglement, o autor fez a seguinte afirmação: “… cada switch existe um mau-cheiro, para o qual vale a pena verificar se não deve ser utilizado polimorfismo.”. Foi essa afirmacao que nao compreendi!

Pois é, você tem de ter bom-senso e ver se não existe uma oportunidade para ter polimorfismo. O caso clássico é quando você tem um “switch” com cases que são códigos que na verdade representam tipos de objetos. Por exemplo:

switch (tipoFuncionario) {
case GERENTE:
    break;
case TERCEIRIZADO:
    break;
default:
    break;
}

Esse tipo de “switch” normalmente indica que pode haver polimorfismo (ou seja, existe uma classe Funcionario que é estendida por Gerente, Terceirizado etc.)

Será que é pq não pode ferir o design OO? imagine que o seu switch faz um série de execuções que poderiam ficar encapsulados em algum outro lugar, permitindo adicionar/modificar mais comportamentos sem alterar toda a hora o switch. pelo que entendi eh mais ou menos isso que os autores/instrutores de OO sempre falam, para tomar cuidado com switch, ifs e CTRL + C ou CTRL + V.

mas eu não tenho muita certeza tb

Valeuu!!!