Comments 13
Хм паттерн на паттерне сидит и паттерном погоняет.
Моя неосуществимая мечта что бы на всех уровнях была абстракция, а компилятор собирал все в жесткий кирпичный код.
И если НУЖНО!!! Разработчику!!! Включался специальный «Супермен» и разворачивал этот байт код в абстракции и прочие «сахары»
Моя неосуществимая мечта что бы на всех уровнях была абстракция, а компилятор собирал все в жесткий кирпичный код.
И если НУЖНО!!! Разработчику!!! Включался специальный «Супермен» и разворачивал этот байт код в абстракции и прочие «сахары»
0
NoFearJoe, как думаешь, можно ли считать проблемой в таком подходе, что в протокол открывается внутренняя реализация? Т.е. наружу от роутера начинает торчать не только close(), но и transitionHandler, а от интерактора service?
И, как понимаю, сделать их private тоже нельзя, т.к. тогда нельзя будет инжектить снаружи.
И, как понимаю, сделать их private тоже нельзя, т.к. тогда нельзя будет инжектить снаружи.
+1
Да, верно — все зависимости становятся доступными извне, но только для чтения. Это можно обойти, правда, потребуется больше протоколов :). Примерно так это может выглядеть:
protocol TransitionHandlerHolder {
var transitionHandler: UIViewController! { get }
}
protocol CloseRouterTrait {
func close()
}
extension CloseRouterTrait where Self: TransitionHandlerHolder {
func close() {
self.transitionHandler.dismiss(animated: true, completion: nil)
}
}
0
Меня беспокоит следующее соображение.
Интерфейсы, протоколы, расширения и т.д.… Ведь это всё подмножество наследования классов в общем и множественного наследования в частности.
Зачем отказываются от общего механизма (множественного наследования), чтобы затем придумывать частные решения той же задачи, плодя сущности на ровном месте?
Не лучше ли просто сказать: «Вот множественное наследование — это сложный и мощный инструмент, которым ты, падаван, можешь и порезаться. Но изучив его один раз, ты изучишь его десять раз, и сможешь применять тысячей возможных способов.»
Зачем весь этот зоопарк технологий и разномастных названий одного и того же?
Интерфейсы, протоколы, расширения и т.д.… Ведь это всё подмножество наследования классов в общем и множественного наследования в частности.
Зачем отказываются от общего механизма (множественного наследования), чтобы затем придумывать частные решения той же задачи, плодя сущности на ровном месте?
Не лучше ли просто сказать: «Вот множественное наследование — это сложный и мощный инструмент, которым ты, падаван, можешь и порезаться. Но изучив его один раз, ты изучишь его десять раз, и сможешь применять тысячей возможных способов.»
Зачем весь этот зоопарк технологий и разномастных названий одного и того же?
0
Я просто оставлю это здесь:
Август 2016 года:
Сентябрь 2018:
Август 2016 года:
Сентябрь 2018:
0
Выглядит как абстракции ради абстракций. Статья с названием «Как избавить проект от лишних килограммов» содержит в минусах «резко возрастающее количество протоколов» и «Иногда код может выглядеть не таким понятным, как при использовании обычных подходов»
0
Несмотря на то, что количество протоколов увеличивается, общий объем кода уменьшается сильнее, так как большие блоки кода перестают дублироваться. Парадокс, в общем.
0
Объем кода уменьшается, но
Иногда код может выглядеть не таким понятным, как при использовании обычных подходов. Если сейчас это и выглядит хорошем решением, имхо, в будущем сделает код только хуже.
0
В строчках исходного когда уменьшается. А в байтах бинарника может и увеличиваться. В Убере вон в борьбе за размер бинарника повыпиливали протоколы везде где можно.
0
Sign up to leave a comment.
Как избавить проект от лишних килограммов