|
Заблокирован
|
||||||
Нужно ли бояться и избегать больших классов-контроллеров и дробить их на кучу?12.11.2020, 09:55. Показов 2888. Ответов 6
Кликните здесь для просмотра всего текста
Соответственно ссылки у нас: /user /user/signin /user/forgot /user/skills /user/progress /user/info /user/property /user/trophies /user/signout Мне говорили, что не нужно бояться больших классов-контроллеров, но я хотел бы узнать у Вас, разделяли бы Вы такой контроллер на кучу контроллеров? И если разделяли бы, то ради чего? Ради ссылок: /user /signin /forgot /skills /progress /info /property /trophies /signout ? Стоит ли заморачиваться выделением?
0
|
||||||
| 12.11.2020, 09:55 | |
|
Ответы с готовыми решениями:
6
Перегрев блока питания - нужно ли бояться? Нужно 2 кода слепить в кучу (деревья) Нужно вынести часть контроллеров в отдельный проект одного приложения |
|
14 / 8 / 7
Регистрация: 09.01.2018
Сообщений: 151
|
|||
| 14.11.2020, 13:56 | |||
|
Коротко - нафига? Если твой контролёр разрастается то ты просто выносишь все вычисления в сторонние классы типа Trait - чисто как пример не пропаганда.
например: SecurityController: /user /skills /progress /info /property
0
|
|||
|
2604 / 1508 / 689
Регистрация: 23.08.2015
Сообщений: 3,839
|
|
| 14.11.2020, 17:53 | |
Сообщение было отмечено Verolomstvo как решение
Решение
Verolomstvo, Трейты точно не нужно использовать. В данном случае лучше разнести контроллеры по группам.
AuthController (вход/выход) SignUpController (Система регистрации) RecoveryController (Система восстановления пароля) Тут имеет важную роль такое понятие как "Контекст". Нужно рассматривать сущность User не просто как набор данных, но и набор методов/действий, которые можно с ним совершить. Т.е. сущность User отвечает за регистрацию, вход, восстановления пароля. А для skills progress и т.д. я бы выделил отдельную сущность к примеру Player со своим набором методов, контроллеров операций и т.д. К примеру можно и выделить отдельный модуль - Система обучения (блок в самом начале игры), соответственно выделить сущность "Ученик". И в этом модуле уже сконцентрироваться на его прогрессе и т.д. Где уже не будет никаких упоминаний о регистрации, восстановления пароля, подтревждения Email и т.д. - которые будут только мешать, более того изменяя модуль Обучения, у вас не будет риска повредить уже готовую систему регистрации, так эти вещи слабо пересекаются. А после прохождения обучения - уже зарегистрировать пользователя. И создать уже полноценного Player-а. У которого уже не будет упоминаний - на какой стадии обучения он находится, так как он уже давным давно ее уже прошел и не нужно будет тянуть этот блок "Ученика" для "Игрока" (Player) всю оставшуюся его жизнь)
1
|
|
|
Заблокирован
|
|
| 15.11.2020, 07:21 [ТС] | |
|
sad67man, progress - это не уровень обучения в начале игры, это система учёта: сколько убил, отрезал ушей, сорвал жетонов, помиловал, вложил денег, совершил обменов, убил диверсантов, пригласил в альянс ........................
ДОСТИЖЕНИЯто есть открываем /user/progress и progressAction генерит нам HTML из таблицы учёта достижений - это просто страница, не модуль, но часть модуля User (Профиль)
0
|
|
|
Заблокирован
|
|
| 15.11.2020, 07:22 [ТС] | |
|
sad67man, а так-то я понял: нужно профиль написать отдельным модулем (в отдельной папке, чтобы при переносе не нарушить целостность мода)
0
|
|
|
20 / 16 / 4
Регистрация: 01.12.2018
Сообщений: 106
|
|
| 17.11.2020, 13:35 | |
Сообщение было отмечено Verolomstvo как решение
Решение
Для больших контроллеров предусматривают вынос действий в отдельные классы. Для нужного действия создается нужный объект. И нет необходимости грузить гигантский контроллер. Yii в пример. Да и непонятно в чем проблема раздробить большой контроллер на несколько маленьких. Тем более, что можно и не заморачиваться. Чтобы возникли тормоза из-за размеров контроллера его код должен измеряться мегабайтами. Единственное, что с большой портянкой кода сложнее работать, вот и все.
1
|
|
|
Заблокирован
|
|||
| 19.11.2020, 11:54 [ТС] | |||
|
/user/info Идём в UserController, работаем с infoAction ![]() А вот если я создам InfoController и захочу открывать его /user/info, то вот тут-то и начинается геморрой: я, как разраб, знаю, что это прописано правилом в роутах, но другому разрабу мне нужно будет пояснить, что есть где-то в дебрях скрипта файл с массивом роутов, которыми мы подменяем нужные нам урлы, потому что всё остальное автоматом делается, мне для /user/info не нужно роут на данный момент прописывать, у меня роутер по этому урлу работает с UserController::infoAction. Но я решил вынести в отдельные контроллеры, НО одним модулем-папкой, у меня заморочки есть - не люблю когда всё разбросано. Добавлено через 2 минуты Добавлено через 3 часа 51 минуту iplaton, а чё я туплю, мне ну нужно роуты подменять правилами, у меня же отработает /user-info и это UserInfoController
0
|
|||
| 19.11.2020, 11:54 | |
|
Помогаю со студенческими работами здесь
7
Полный 0 в JavaScript, JQuery и.т.д, а нужно сделать кучу всего для сайта Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git
main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели
8ATzM_2aurI
|
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2.
Задача: запретить редактирование документа, если он открыт у другого пользователя.
/ / . . .
|
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои.
А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
|
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
kYBz3eJf3jQ
|
|
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
|
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
|
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора
Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2.
Задача: уведомлять пользователя, если. . .
|
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
|