Избавляемся от Context в бизнес логике Как ответить на собеседовании

  Рет қаралды 3,338

Android Broadcast. Все об Андроид разработке

Android Broadcast. Все об Андроид разработке

Күн бұрын

Пікірлер: 34
@AndroidBroadcast
@AndroidBroadcast 29 күн бұрын
🔗 Платная подписка на Boosty abdev.by/oroS и в Telegram abdev.by/lrpW 🔗 Telegram Android Broadcast t.me/+y-LPEB3R5-9mNmRi ✉ Написать Кириллу kirill@androidbroadcast.dev
@vladimirpyrkh4422
@vladimirpyrkh4422 28 күн бұрын
Неплохое видео, но осталось какое-то количество вопросов после просмотра. 1. сомнительное утверждение что надо показывать всё что ты знаешь и умеешь. Разве суть задачи не в том, чтобы решить ее максимально оптимальным способом? 2. По поводу разделения слоёв, разве переименование файлов как и работа с файловой системой в целом можно 100% отнести к бизнес логике? 3. если говорить про платформонезависимый код, то очень странно говорить что вполне нормально использовать R класс в таком коде. Да он автогенерируемый и это просто набор интов, но почему он должен быть вообще? А FileRenamer так и продолжает его использовать. 4. Продолжение п.2 но с сущностями Resource, почему используются Int значения в качестве идентификатора ресурса? Откуда уверенность в том, что айди будет именно интом? 5. Самый главный вопрос, почему решение 2 в данном случае хуже чем решение 3? У нас и там, и там есть какой-то класс для предоставление строки из ресурсов. В обоих случаях нам надо писать платформозависимый код для получение ресурсов из конкретной платформа, только в решении 2 это минус, а в решении 3 мы не говорим что это минус. 6. Почему мы говорим что решение 3 более гибкое за счёт того, что мы добавили переменную с ресурсом в сигнатуру метода? В данном конкретном случае у нас не просто переименование файла, т.е. мы не просто меняем имя файла на значение из ресурсов. У нас идёт добавление префикса и это выглядит как более специфическая и узкая задача. Нужна ли нам эта псевдогибкость с параметром префикса вообще? 7. Ну и как уже писали под оригинальным заливом и тут тоже, куда лучше и гибче использовать какие-то константы(енамы, что угодно) и маппер на ресурсы уже непосредственно в UI классе, чтобы что-то рисовать на UI. Как по мне решение 2 сильно лучше чем решение 3 с точки зрения KISS.
@AndroidBroadcast
@AndroidBroadcast 24 күн бұрын
1. сомнительное утверждение что надо показывать всё что ты знаешь и умеешь. Разве суть задачи не в том, чтобы решить ее максимально оптимальным способом? Показал несколько подходов, которые видел как решение
@stasleonov5196
@stasleonov5196 23 күн бұрын
Огонь, Кирилл, спасибо большое за материал, очень интересно.
@AndroidBroadcast
@AndroidBroadcast 23 күн бұрын
Пожалуйста. Всегда приятно когда находит своего зрителя материал
@virtuality_arcade
@virtuality_arcade 21 күн бұрын
Лет 10 назад ещё придумали рабочую активити, сервис или аппликейшн наследовать от resourse manager интерфейса и так инжектить. В контексте выполенения работает на ура
@A-pe5yy
@A-pe5yy 29 күн бұрын
Повторюсь еще раз. Зачем все эти доп провайдеры и прочее в бизнес логике? Не правильней было бы: на бизнес слое оперировать модельками бизнес слоя, а в ui уже мапить в строки и прочее, таким образом бизнес логика ничего не знает и не должна знать о строках на ui.
@hievery9678
@hievery9678 27 күн бұрын
Если речь про то чтобы достать строку, чтобы потом отобразить ее на ui, то соглашусь, использование провайдеров для получения строки из ресурса в бизнес логике - зачастую лишнее. Тем более что если делать это неправильно, то при смене языка на телефоне, текст на экране не сменится. Однако если текст будет использоваться, не для отображения UI, а для каких-либо дальнейших вычислениях, то я не вижу другого выхода. Тот же пример из видео. Как взять новое название файла без констант и провайдеров? Работа с файлами это явно не то, что хочется делать на UI слое.
@A-pe5yy
@A-pe5yy 27 күн бұрын
@@hievery9678 по второй части - можно передать текст через параметры функции, например, если название файла задаётся на ui в каком-нибудь поле ввода, то дальше можно прокинуть в бизнес слой с помощью параметров функции.
@captainsustain
@captainsustain 23 күн бұрын
@@hievery9678 Мне кажется, наиболее подходящее решение - воспринимать R класс как принадлежащий только UI слою, а нужные для бизнес-логики стринги прописывать константами.
@hievery9678
@hievery9678 22 күн бұрын
@@A-pe5yy Если надо писать название файла в UI, то да, тут без вопросов. Но придет требование чтобы например какие-нибудь бэкап файлы сохранились в локали пользователя и вот уже нет пользовательского поля. Но это уже конечно уж очень редкий случай, в большинстве случаев ресурсы в бизнес логике не нужны
@hievery9678
@hievery9678 22 күн бұрын
@@captainsustain Будет работать, да. Но ровно до тех пор, пока заказчики не скажут, что нужны локализованные строки в той части бизнес логики о которой мы говорим :) Но как я уже писал на другой коммент, это очень редкий юзкейс и в реальности почти всегда локализованные строки в бизнес логике действительно не нужны.
@АлександрЯнчеленко
@АлександрЯнчеленко 23 күн бұрын
недавно было что-то подобное в желтый банк, жаль раньше не заметил это видео, можно было бы поумничать )
@AndroidBroadcast
@AndroidBroadcast 22 күн бұрын
Оттуда и была взята задачка
@ЮкаРазраб
@ЮкаРазраб 29 күн бұрын
Не понятно почему вариант с вынесением получения платформозависимого кода из вне вообще не рассматривался. Хотелось бы узнать причину. В видео не раскрыто почему аннотации Res не являются чисто андроидовскими: они есть и на других платформах тоже?
@AndroidBroadcast
@AndroidBroadcast 29 күн бұрын
Весь пакет androidx.annotations уже давно KMP
@thethirdplace421
@thethirdplace421 29 күн бұрын
Вчера на ночь посмотрел, что-то на эту тему снилось. Еще раз смотреть?
@AndroidBroadcast
@AndroidBroadcast 29 күн бұрын
Перезалив вынужденный был, а может и знак
@Wanderspool2807
@Wanderspool2807 29 күн бұрын
Ну, для запоминания как раз лучше вечером перед сном и утром после сна
@oldg3489
@oldg3489 28 күн бұрын
эх, столько абстракций, надеюсь, когда-нибудь до меня дойдет зачем это всё и как до этого додумываться самому, а сейчас я бы наверное просто заюзал вариант с константой и прокидыванием строки в параметр функции, а выше уже где-то думал как ее туда засунуть
@AndroidBroadcast
@AndroidBroadcast 28 күн бұрын
Абстракции - это не страшно и на большом масштабе кода и команды позволяет строить масштабиремый софт и тестировать его. Оптимизиатор кода R8 потом уберет все лишние прослойки и эффект на код будет минимален. Создавать объекты тоже нестрашно - виртуальная машина ART уже давно нацелена на то что постоянно создается много обёектов
@Andrey-pu1lv
@Andrey-pu1lv 27 күн бұрын
а что за клавиатура? Видео тоже крутое)
@AndroidBroadcast
@AndroidBroadcast 24 күн бұрын
Если клавиатура на столе - Logi MX Keyboared
@sergeykhomichenko1943
@sergeykhomichenko1943 29 күн бұрын
А что делать, если для условных Prefereces для самого их создания нужен контекст? Это же по идее data слой, но туда обычно не хотят контекст закинуть
@A-pe5yy
@A-pe5yy 29 күн бұрын
Туда обычно же application context как раз и закидывают )
@AndroidBroadcast
@AndroidBroadcast 24 күн бұрын
Где-то создают экземпляр, обычно в DI, и другие классы смогут его получить
@maxyablochkin-0505
@maxyablochkin-0505 29 күн бұрын
На junior такие есть вопросы?
@AndroidBroadcast
@AndroidBroadcast 29 күн бұрын
Вполне могут быть
@bolnoi8
@bolnoi8 26 күн бұрын
Желтый банк - райф?
@AndroidBroadcast
@AndroidBroadcast 24 күн бұрын
Нет )))
@vahekhachaturian2424
@vahekhachaturian2424 29 күн бұрын
перезалив?
@AndroidBroadcast
@AndroidBroadcast 29 күн бұрын
Да, перезалив вынужденный
@alexanderj8981
@alexanderj8981 29 күн бұрын
А что случилось с первым?
@AndroidBroadcast
@AndroidBroadcast 29 күн бұрын
Удален
Почему вам не нужен Kotlin Multiplatform
21:23
Android Broadcast. Все об Андроид разработке
Рет қаралды 11 М.
5 СЕКРЕТНЫХ преимуществ Android эмулятора которые вы не знали!
26:44
Android Broadcast. Все об Андроид разработке
Рет қаралды 4,3 М.
Из какого города смотришь? 😃
00:34
МЯТНАЯ ФАНТА
Рет қаралды 2,3 МЛН
Муж внезапно вернулся домой @Oscar_elteacher
00:43
История одного вокалиста
Рет қаралды 5 МЛН
World’s strongest WOMAN vs regular GIRLS
00:56
A4
Рет қаралды 47 МЛН
Симбу закрыли дома?! 🔒 #симба #симбочка #арти
00:41
Симбочка Пимпочка
Рет қаралды 3,6 МЛН
Организация кода в проекте | В какой пакет положить Kotlin класс
17:03
Android Broadcast. Все об Андроид разработке
Рет қаралды 6 М.
Всё о лицензиях библиотек, что необходимо знать разработчику
10:31
Android Broadcast. Все об Андроид разработке
Рет қаралды 1,7 М.
KMP IDE от JetBrains // Новая схема релизов Android // Новые фичи Android Studio
27:35
Android Broadcast. Все об Андроид разработке
Рет қаралды 3,4 М.
Почему вам стоит учить/использовать Kotlin Multiplatform
16:54
Android Broadcast. Все об Андроид разработке
Рет қаралды 3,9 М.
Navigation In Multi-Module Android Apps - Why You're Doing It Wrong!
10:59
Вы не поверите, насколько распространены эти ошибки в коде Android-проектов!
1:58:26
Android Broadcast. Все об Андроид разработке
Рет қаралды 2,2 М.
Из какого города смотришь? 😃
00:34
МЯТНАЯ ФАНТА
Рет қаралды 2,3 МЛН