OleKh
Я уже ответил на это:
Цитата (twin @ 23.10.2015 - 08:44) |
Ну значит разделим потом, если так положено. Просто не хотелось из-за двух строк класс плодить. Когда накопится функционала, сделаем фронт-контроллер. |
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
Цитата (chee @ 23.10.2015 - 08:41) |
функционал FrontController и Router в одном классе это архитектурная ошибка. |
Чисто любопытно, а чем грозит эта самая ошибка архитектуры? Если судить не по архитектуре фреймворка, а по сути и назначению роутера, то вот это тоже ошибка архитектуры:

А она почти в каждом доме есть. Чем помешает роутеру управление контроллерами? Другими словами, почему нельзя сделать RouterDispatcher или еще как-нибудь назвать?
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
twin, здесь не параллели с реальным миром, тупо распределение обязанностей. Роутер должен искать совпадение по правилам и делать он должен это хорошо, это его основная обязанность.
Ну и если хочешь параллель с реальным миром, то роутер тупо гоняет твой трафик, а какой фильмец или музом посмотреть решаешь ты.
_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
Я не про то спросил. Я прекрасно знаю, как это у вас заведено. Я спрсил "почему"? Чем мне грозит их объединение под общим флагом? Я даже согласен не называть это роутером, а назвать допустим селектором. Или еще как-нибудь. Ты же говоришь, что это ошибка архитектуры. А ошибка должна подразумевать плачевные результаты. Если, я при строительстве дома, допустил ошибку архитектуры, и совместил потолок с полом, то это понятно. Но если я хочу совместить окно с дверью, то какая же это ошибка. Это просто дизайн, особенность. И ничего в этом страшного нет, даже наоборот. Намного функциональнее. И войти можно и светло.

Вот если я такое решение внедрю где-нибудь в Харлеме, это будет ошибкой. Потому что там нужна не стеклянная, а бронированная дверь. Вот мне и интересно, чем опасно и неправильно совмещение роутера и диспетчера в фреймворке. Почему это считается
ошибкой архитектуры?
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
twin, потому что это не соответствует правилам разделению ответственности. Ты же вроде как говорил о GRASP, так что это вроде как нарушает некоторые его принципы.
А именно у тебя нарушается принцип High Cohesion (Высокая связность). То есть у тебя на лицо низкая связность.
Цитата из вики
Цитата |
Класс с низкой степенью связности выполняет много разнородных функций или несвязанных между собой обязанностей. |
_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
cheeЭто единственный аргумент? Дело в том, что я пытаюсь попробовать на прочность ваши каноны. Как ты в ветке про геттеры говорил - декларативные аргументы меня не устраивают. Хотелось бы конкретики. Где я могу в фреймворке использовать по отдельности роутер и диспетчер. И почему я не могу в крайнем случае воспользоваться для этого частью функционала моего комутатора, если так его назвать. Почему я должен покупать отдельно роутер, модем и еще Wi Fi роутер, если все прекрасно работает в одной коробке?
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
bestxp
28.10.2015 - 16:35
Цитата (twin @ 28.10.2015 - 15:48) |
chee Это единственный аргумент? Дело в том, что я пытаюсь попробовать на прочность ваши каноны. Как ты в ветке про геттеры говорил - декларативные аргументы меня не устраивают. Хотелось бы конкретики. Где я могу в фреймворке использовать по отдельности роутер и диспетчер. И почему я не могу в крайнем случае воспользоваться для этого частью функционала моего комутатора, если так его назвать. Почему я должен покупать отдельно роутер, модем и еще Wi Fi роутер, если все прекрасно работает в одной коробке? |
Тут ты должен по отдельности сделать модем wifi и тд включая даже порты и зарядное устройство отдельно
Ты не путай в нашем случае готовый сайт в котором все это уже вместе и настроено ( в твоем примере роутере ) и конструкторе для сборки роутера в котором и wifi и гнезда и зарядка лежат отдельно и их еще надо припаять
Что такое диспатчер или же фронт контроллер, ему на вход дали список роутов и правил, и сам роутер куда это спихнуть, из роутера он получает всего 1 роут и по данным что есть в роуте запускает приложение дальше
список роутов может быть как классических web контроллеров так и список консольных команд и роутера для консольных,
в этом плане если перложить на то устройство которое ты хочешь сделать монолитом, но по факту оно так же компонентно и собрано в эту коробку с интерфесами I/O
twin, если для тебя не аргумент, то что ты нарушаешь собой же выбраные для следования принципы, то ок, это не ошибка архитектуры, это просто такая архитектура, но с низкой связностью.
Цитата (twin @ 28.10.2015 - 15:48) |
Где я могу в фреймворке использовать по отдельности роутер и диспетчер. |
Генерация ссылок в представлении, получени дополнительных параметров в контроллерах, контроллерах-представления. По крайней мере я у себя использую роутер именно так.
_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
Цитата (chee @ 28.10.2015 - 12:42) |
twin, если для тебя не аргумент, то что ты нарушаешь собой же выбраные для следования принципы, то ок, это не ошибка архитектуры, это просто такая архитектура, но с низкой связностью. |
Я пока ничего не нарушаю. Я разобраться хочу. Вот довод
bestxp про консоль, это уже ближе к теме. А генерацией ссылок у меня будет заниматься отдельный сервис. Он тут не при делах совсем. В общем ясно, действительно лучше сделать раздельно. Спасибо всем.
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
Цитата (twin @ 28.10.2015 - 16:57) |
Я пока ничего не нарушаю. |
То есть GRASP у тебя не используется?
_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
Используется. Вот в данном случае я и хотел понять, почему нужно следовать этому принципу. Про Cli не задумывался, ибо не ставил такой цели.
Вообще очень сложно следовать
всем канонам. Потому что если думать о командной строке заранее, нарушается YAGNI. Система усложняется ради возможного в будущем функционала. И не ясно теперь, из чего выбрать.
Компромис есть конечно. Сразу затеять и Cli.

Но надо ли оно на учебном фреймворке, который пока еще и с HTTP то не работает.
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.