"switch case" — плохо?
Я вам могу такой код скинуть, что вы что там не только о switch case забудете, а о синтаскическом сахаре вообще.
Как вы думаете, этот код будет показателем того, что синтаксический сахар - это плохо?
Я думаю суть вы поняли. Где-то удобнее использовать if-else, где-то switch-case. Кто-то просто не любит switch-case по каким-то там своим причинам.
Главное что бы не было такого, а то я видел уже как-то, причем в не самом маленьком проекте:switch (*bool переменная*)
{
    case true:
        *действия*
    break;
}
Как сказали коллеги switch-case не всегда применим. Основное принцип когда switch-case оправдан - 1)у вас МНОГО(больше 3) наборов инструкций в зависимости от значения параметра. 2) Проверяется строгое равенство параметра и его значений. Если логика сложнее( нестрогое равенство или несколько различных проверок различных параметров) - должен применяться if else. А если совсем углубляться в недра ООП - есть такие вещи как наследование и перегрузка методов. Т.е. вы напишете someObject.someMethod() , а логика будет определяться полиморфно, но это уже совсем другая история.