Как стать автором
Обновить

Комментарии 3

Подскажите, пожалуйста, а чем вызван такой высокий уровень абстракции? Кажется, что дерево контроллеров задается один раз и меняется довольно редко. А если и меняется, то все равно не целиком, а лишь переносятся целые ветки с места на место. В таком случае менять конкретный роутер не так уж и сложно. А с такой высокоуровневой абстракцией повышается и порог входа и стоимость реализации, а ради чего все? Да, вы указали Ваши требования к идеальному роутингу, но что стоит за ними? Какого причины такого усложнения?

Думаю, с этой информации и стоило начинать статью, чтобы помочь читателю правильно выбрать инструмент.

Подскажите, пожалуйста, а чем вызван такой высокий уровень абстракции? Кажется, что дерево контроллеров задается один раз и меняется довольно редко. А если и меняется, то все равно не целиком, а лишь переносятся целые ветки с места на место. В таком случае менять конкретный роутер не так уж и сложно. А с такой высокоуровневой абстракцией повышается и порог входа и стоимость реализации, а ради чего все? Да, вы указали Ваши требования к идеальному роутингу, но что стоит за ними? Какого причины такого усложнения?

Да, дерево навигации редко полностью перестраивается, но Nivelir и не меняет дерево полностью. Это просто DSL, который позволяет описывать сложную навигацию простыми переходами, начиная с найденного в иерархии контейнера.

Он очень полезен для глобальной навигации, например, для диплинков. В статье есть пример открытия диплинка на экран чата, который взят из нашего приложения, и его логику довольно неприятно делать стандартными средствами, получится гораздо больше сложного и плохо переиспользуемого кода, в котором очень легко допустить тяжело воспроизводимую ошибку.

Для локальной навигации модуля, в которой все ограничивается презентом и пушом, Nivelir выступает скорее как более компактная и переиспользуемая альтернатива средствам UIKit. Например, можно один раз объявить роут на модальное отображение экрана авторизации и везде его переиспользовать в минимум кода. Плюс консистентность и совместимость с глобальным роутингом.

А с такой высокоуровневой абстракцией повышается и порог входа и стоимость реализации, а ради чего все? Да, вы указали Ваши требования к идеальному роутингу, но что стоит за ними? Какого причины такого усложнения?

На самом деле, Nivelir как раз делает простым описание навигации, его легко читать и поддерживать - в этом и есть его смысл. Сложным наверняка показался из-за статьи, слишком много деталей. Причины стоят за нашими требованиями, у нас довольно сложная навигация в проекте, и мы хотели упростить ее по максимуму на стороне использования.

Думаю, с этой информации и стоило начинать статью, чтобы помочь читателю правильно выбрать инструмент.

Согласен, хотелось больше информации донести про внутреннее устройство. Но про блага использования мы еще подготовим материал, в котором постараюсь привести примеры навигации c Nivelir и без него.

Спасибо, за развернутый ответ. Ждем больше "бизнес" характеристик -- техническая часть раскрыта достаточно глубоко :)

Зарегистрируйтесь на Хабре, чтобы оставить комментарий