214 похожих чатов

Давайте обратимся к истокам. Щас вот наброшу прям =) А почему

именно нельзя иметь контект в презентере или бизнес-логике? В чем обоснование?
Я слышал такие причины, что нельзя тогда простестить. Но есть Роболектрик, пожалуйста.
Роболектрик долгий. У меня он стартует за 6 секунд, это много?
На сколько я знаю, если Роболектрик стартовал для одного теста, то уже просто подрубается к следующим. То есть 6 секунд тратится один раз. Дальше все по накатке.
Действительно иногда требуется либо получение строки, либо даты, либо еще чего-то.
Не спорю, можно это обходить энамом, врапперами и т.д. Но стоит ли это того?
Я придерживаюсь позиции, что архитектура должна нам прежде всего помогать, а не усложнять. А если следовать бездумно некоторым канонам, смысл которых не так ясен, мне кажется не совсем верным.

3 ответов

13 просмотров

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

имхо тестирование вообще мимо. Смысл в разделении приложения по слоям. И вот уже исходя их этого контекста не должно быть в презентере.

К теме, почему нельзя/можно использовать контекст в презентере. Я придерживаюсь такого мнения: контекст в презентере открывает огромное количество вариантов для чего его можно использовать. Когда видишь зависимость презентера от контекста, то мозг сразу настораживается, непонятно для чего конкретно он используется. Если презентер зависит только от самописных классов(причем построенных по принципу единственной ответственности) то просто глядя на конструктор презентера можно очертить границы, на что он может повлиять и от чего он зависит. Если конечно вы работаете в команде, каждый член которой имеет внутреннюю дисциплину и понимает какие границы использования контекста в презентере или у вас жесткое код ревью то проблем не должно быть, но если это не так, то на выходе можно получить проект, который вроде построен по MVP, но на самом деле имеет презентеры с размытой ответственностью и с различными side-эффектами. К тому же при таком раскладе может сыграть теория разбитых окон. Поэтому лучше задать изначальные ограничения на зависимости презентера и избавить проект от будущих проблем. Естественно за это придется заплатить чуть большим количеством кода, но, как известно, разрабы больше времени читают а не пишут код.

Похожие вопросы

Обсуждают сегодня

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
Подскажите, а есть vault lite или ченить такое?) А то нужен вольт для похода в вольт, но весит он ~500 мб) как-то многовато для парочки запросов ))
Alexandr Orloff
17
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Карта сайта