Рефакторинг оператора switch, вызывающего другие функции

В моем классе фрагментов есть большой оператор switch. В каждом случае вызываются другие функции, которые, например, загружают изображение и отображают его или раздувают макет и отображают его. Это плохая практика? Я читал, что оператор switch можно отредактировать, чтобы получить чистый код, но как я могу очистить этот код, если я вызываю разные функции для каждого случая?

Пример кода

switch(message.type){
    case type.IMAGE:
        downloadAndDisplayImage(); //Download Image and display It in a imageview
        break;
    case type.MAP:
        inflateAndDisplayMap(); //inflate and display a MapView inside a layout
        break;

И так далее..

Не знаю, нужно ли его реорганизовать. Нужно увидеть код.

Christopher Schneider 24.08.2018 19:31

Это, вероятно, было бы лучше в Code Review с образцом кода.

Ivan Wooll 24.08.2018 19:31

Ваш оператор switch в порядке. Это чистый код. Оставьте как есть и не волнуйтесь.

greenapps 24.08.2018 21:32
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
3
58
1

Ответы 1

Запах корпуса выключателя хорошо известен. Если вы хотите иметь «чистый» код, вам может помочь шаблон состояния или следующая ссылка.

Способы устранения переключения в коде

В конце концов, для кого это чистый код?

Не уверен, что могу использовать полиморфизм в этом случае, я просто вызываю функции, которые в основном что-то загружают и отображают в каком-то виде It, как в примере кода

Ferra 24.08.2018 19:42

Операторы переключения - это не более запах кода, чем любая другая функция. Иногда это лучший ответ, иногда нет. Добавление дюжины вспомогательных очищающих средств для разных случаев, когда нет другой веской причины для того, чтобы иметь один, - это запах. У нас недостаточно информации, чтобы сказать правильный ответ.

Gabe Sechan 24.08.2018 19:45

@GabeSechan Я согласен. Если есть только один программист, то я думаю, что все, что он делает, является стандартом.

aksappy 24.08.2018 19:47

Другие вопросы по теме