Pull to refresh

Comments 5

UFO just landed and posted this here

В чем на Ваш взгляд заключается усложнение?

UFO just landed and posted this here
UFO just landed and posted this here

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

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

Далее, скорее всего разработчик попробует сделать какую-то универсальную связку датасорса и делегата, работающие во всех возможных случаях. Конечно, все случаи учесть все равно не получится и его решение будет работать далеко не всегда, а в неподходящих случаях придется городить огород, чтобы его решение можно было натянуть на глобус, или на сову ^.^ Таких решений на Хабре много. Вот из последнего. В итоге получается очень сложно и непонятно. Хотели упростить и сократить дублирование, а сделали непонятного франкенштейна.

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

Именно это и позволяет нам переиспользовать код из табличного экрана в табличный и создавать их практически за часы. При этом у нас нет сотен однотипных контроллеров, генерируемых кодогенераторами, как например, это делается в VIPER'е. И нет сложных монструозных решений, не работающих в частных случаях. Порог входа проверен небольшим числом новых разработчиков. Им понравилось.

Очень подробно мотивация описана в нашей первой статье. Рекомендую прочитать ее, если вы еще ее не читали. https://habr.com/ru/company/psb/blog/588332/

Мне удалось ответить на Ваш вопрос?

Sign up to leave a comment.