В вопросах я вижу что все используют какой-то switch, какой-то case. Я что - то пропустил или не понял?
Аркадий
18 уровень
Что это?
Архивный
Комментарии (5)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Venom
14 августа 2019, 12:23решение
а его позже еще будут проходить помойму. используют те, кто читает доп.материалов много и те, кто читает все комментарии в задачах и в лекциях
+2
Justinian Judge в Mega City One Master
14 августа 2019, 11:40полезный
Скорее забыл. Но это к лучшему.
+1
Wladyslaw Java Developer Master
14 августа 2019, 13:33полезный
Не первый раз встречаю утверждение что свитч лучше заменять ифами. Собственно, а почему так? Лично с моей точки зрения свитч-кейс вполне логично смотрится при некоторых условиях, да и читабельность от него не страдает. Почему его часто ругают? Генерирует больше байт-кода?
+1
Justinian Judge в Mega City One Master
14 августа 2019, 13:55полезный
Это твое мнение, мнение одного из полсотни миллионов джава программистов :)
К свитчу много претензий, он генерирует простыня стайл код (спагетти код), я часто роюсь во внутренностях jdk, spring и прочих библиотек, и честно говоря часто даже специально искал применение там свитча и не находил ) Видел в jdk, обработку enum, ну казалось бы, есть переменная, которая может быть либо А, либо Б, либо В, либо Г, либо Д и в зависимости от этого нужно исполнить тот или иной код. И что я там видел? If / else if.
Но это больше исключение , поскольку есть около десятка основных способов замены свитч - кейс, и если в программе такое встречается (свитч) это говорит о плохом дизайне или что человек не ориентируется в паттернах, не понимает /не использует полиморфизм и тд.
Основные претензии к свитчу -
1. спагетти код - конструкция выглядит нагроможденно.
2. плохая читабельность - блоки кода в if читаются легче как правило чем в свитче
3. в разы больше возможность допущения ошибок - на том же джава раше сотни и тысячи вопросов, когда люди путались в свитч -кейсе , часть не понимала что это по сути как цикл можно рассматривать, часть забывала там фигурную скобку, там точку с запятой, внешне вроде все так, а результат работы непредсказуем, часть break забывала, часть не учитывала что остальные кейсы будут использоваться и это все вместе.
Начиная с 12 джавы предлагаются изменения, они вроде еще не включены, свитч планируется быть и оператором и выражением,синтаксис другой чуть получше выглядит, но это будет в будущем.
А пока...пиши как считаешь нужным. Я ориентируюсь на тот код, который видел у синиоров и тимлидов, продакшен код (не индус стайл), и я не видел там свитчей - опыта у меня как у неработающего еще мало, но свитчей у них не видел ни разу. У меня такие ориентиры.
У тебя другие, пойдешь на работу , там тимлид уже скорректирует если надо.
По теме:
https://habr.com/ru/post/443464/
https://www.developer.com/java/data/seven-ways-to-refactor-java-switch-statements.html
и тд
+1
Wladyslaw Java Developer Master
14 августа 2019, 14:03полезный
Ну, я же не говорю, что мое мнение верно, просто на данном этапе именно мне не понятно почему его так не любят. За развернутый ответ спасибо, по поводу нововведений в 12-й джаве тоже читал.
+1