Russian Qt Forum
Май 06, 2024, 05:48 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 2 [3]   Вниз
  Печать  
Автор Тема: Большой switch  (Прочитано 14051 раз)
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



Просмотр профиля
« Ответ #30 : Декабрь 25, 2014, 17:34 »

то самое время пересматривать архитектуру
Бегите. Подмигивающий
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2094



Просмотр профиля
« Ответ #31 : Декабрь 25, 2014, 17:37 »

Бегите. Подмигивающий
Чувствую, сейчас будут закидывать шапками  Улыбающийся
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #32 : Декабрь 25, 2014, 17:56 »

Ну и что:
Код
C++ (Qt)
bool update = false;
_map[id](this, update);
 
if (update) { ... }
 
Тот update могут устанавливать лишь некоторые ветки - а ф-ции мапы придется иметь параметр. И еще один .. и еще.. Уже упоминал об этом в том же посте #3

А вообще, если возникают сложности с локализацией свитча, то самое время пересматривать архитектуру, на которую, вероятно (очень вероятно),  как всегда забили) 
Таких слов "пересматривать архитектуру" лучше не употреблять Улыбающийся  Даются 500K строк которые коряво но работают (что там - хз). и список фич которые надо. очень надо. И баги пофиксить, чтоб не вылетало. И OpenGL присобачить - чтоб времени не было патякать об "архитектуре". Поэтому мои робкие попытки что-то улучшить - уже подвиг  Улыбающийся
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2094



Просмотр профиля
« Ответ #33 : Декабрь 25, 2014, 18:13 »

Цитировать
Тот update могут устанавливать лишь некоторые ветки - а ф-ции мапы придется иметь параметр. И еще один .. и еще..
А собрать необходимые параметры в одну структуру (описывающую текущее состояние) и передавать её (или просто возвращать её).. Или не любовь к паттернам (а это тоже считается паттерном) исключает и это решение?

Код
C++ (Qt)
state s = _map[id](this);
 
if (s.update) { ... }
 
// или
 
state s;
_map[id](this, s);
 
...
 

    
« Последнее редактирование: Декабрь 25, 2014, 18:40 от m_ax » Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #34 : Декабрь 25, 2014, 18:59 »

А собрать необходимые параметры в одну структуру и передавать её (или просто возвращать её).. Или не любовь к паттернам (а это тоже считается паттерном) исключает и это решение?
"Давайте заведем структуру и забьем туда параметры на все случаи жизни. И будем эту структуру давать каждому, а он использует нужное ему". Ну как-то это не вяжется с хорошими словами "мировоззрение", "концепт" и др из Вашего лексикона  Улыбающийся

Упорное доказательство типа "все равно лучше switch не придумаете!!" совсем не входит в мои планы. Возможно для обобщений мало материала - поэтому я и создал соседний пост. Может не размениваться на один частный случай (копирование параметра), а попробовать обобщить сразу неск больших свитчей?
Записан
sergek
Гипер активный житель
*****
Offline Offline

Сообщений: 870


Мы должны приносить пользу людям.


Просмотр профиля
« Ответ #35 : Декабрь 26, 2014, 11:23 »

Может не размениваться на один частный случай (копирование параметра), а попробовать обобщить сразу неск больших свитчей?
Тема, на мой взгляд, полезная. Рассмотреть разные случаи из практики, варианты замены свитча с использованием объектного подхода, шаблонов етц. Хороший может быть материал.
Записан

Qt 5.13.0 Qt Creator 5.0.1
Win10, Ubuntu 20.04
Страниц: 1 2 [3]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.095 секунд. Запросов: 23.