Comments 3
Спасибо, полезно!
Несколько моментов:
Во-первых, targert
-> target
:) Это опечатка, а об опечатках в личку, но тут это в коде, так что это практически pull request :)
Во-вторых, небольшое упрощение:
self.view?.onTouchedHandler = { [weak self] in
self?.onTouched()
}
// вроде как, можно заменить на
self.view?.onTouchedHandler = self?.onTouched
// ну и так же для `goToSecondHandler`
И немного по структуре статьи:
А вот про разновидность данного паттерна, которая решает проблему сборки, возникающую при использовании MVP информации не так уж и много. Давайте попробуем разобраться что такое Router применительно к паттерну MVP
Из этого абзаца не понятно, в чём заключается "проблема сборки", и при этом создаётся впечатление, что её решает добавление роутера в классический MVP.
осознаем возникающую проблему сборки и применим сущности Assembley и Router для решения данной проблемы
Эта строка не помогает ситуации :)
Как вы догадываетесь, это озадачивает, в результате я очень внимательно вчитывался в статью, пытаясь понять, что, как и почему, а в итоге остался несколько разочарован, что суть "просто в добавлении сущности Assembly")
Ну и тут возникает проблемный вопрос всех туториалов – насколько глубоко нужно уходить в детали реализации "базовых" / "фоновых" вещей. Наверняка Вы тоже видели множество обучалок по какой-нибудь теме типа "создание локальных пуш-уведомлений", которые начинаются с "откройте Xcode, кликните New -> Project..." :) Я это к чему: из процитированного параграфа, вроде как, следует, что главная "вишенка" статьи – это та самая Assembly. Но чтобы до неё добраться, приходится аккуратно пройти через все шаги создания типового MVP(+R), с полным кодом и всеми деталями. В сочетании с тем, что проблематика обозначена не вполне чётко, как мы выяснили выше, воспринимается немного тяжело, т.к. нужно всю статью держать в голове полный контекст, ибо не знаешь, что из него дальше понадобится.
Я бы, наверное, постарался почётче обозначить проблематику в начале – расписать чуть подробнее, какую проблемы мы, собственно, пытаемся решить. Дальше, как вариант, можно использовать подход, который Apple очень любит в своих обучалках и документации – "сверху вниз". Изложить всю концепцию очень поверхностно, потом всё то же самое чуть более подробно, потом то же самое совсем подробно, уже с кодом и т.д. При этом код самого MVP может вообще уехать вод спойлеры, как вариант, хотя это дело вкуса, конечно.
P.S. Не поймите меня неправильно, я благодарен за статью, и критика – это просто моё личное мнение в надежде, что оно покажется Вам разумным и, возможно, следующие статьи будут ещё лучше) Моё мнение – не истина в последней инстанции)
В private extension можно не писать private func, она уже private.
MVP with Router