Модули в Android Clean Architecture на практике

Поділитися
Вставка
  • Опубліковано 4 жов 2024

КОМЕНТАРІ • 149

  • @TimofeyKovalenko
    @TimofeyKovalenko  3 роки тому +7

    Курс Разработка мобильных приложений под Android kotlin: kiparo.com
    СОДЕРЖАНИЕ:
    00:00:00 - кратно о всех видео про Clean Architecture
    00:01:19 - проблема при использовании пакетов
    00:05:12 - создаем модули в Android
    00:17:04 - преимущества мультимодульного проекта
    00:19:35 - про следующие видео

    • @artur-lg7wv
      @artur-lg7wv Рік тому

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

  • @vjmarcus5840
    @vjmarcus5840 3 роки тому +41

    Лучшая серия про Clean, что я видел! Спасибо

  • @МихаилМалахов-л2щ

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

  • @artlinestudio6735
    @artlinestudio6735 3 місяці тому +1

    Великолепный урок! Спасибо учитель. Полезно, красиво, доступно, интересно!

  • @ЮлияБелик-я1к
    @ЮлияБелик-я1к 2 роки тому +9

    Посмотрела все ваши видео по архитектуре) Очень понятно и структурировано объясняете, в голове сразу навелся порядок после просмотра) Да и почти нету воды, все четко и по существу) Плюс иллюстрация материала на диаграмме очень облегчает восприятие) В общем большое спасибо, жду новых видео

  • @lirjarmuhametova8516
    @lirjarmuhametova8516 Рік тому +3

    Я прозрела. Я просто сейчас нахожусь в таком приятном шоке. Реально я раньше никак не могла понять зачем нужны эти папки? Все говорят про ООП, SOLID , но что это такое и как реализовать я не понимала. А здесь буквально за несколько уроков я всё поняла. Спасибо большое 🤗

  • @ШарьярЕсемуратов-о4х

    Здравствуйте, Тимофей! Спасибо за серию про чистую архитектуру. Очень хотелось бы увидеть от вас Retrofit , FireBase

  • @yuruar
    @yuruar 2 роки тому +7

    Удивительно четкое изложение материала, просто впечатлён, спасибо!

  • @landfathich
    @landfathich 2 роки тому +4

    улыбнула фраза "ну это легкая тема" после 5-ти 30-минутных видео хаххпа, а вообще смысл и вправду несложный ,единственное, что сложно, это не просто понять, а уметь мыслить таким паттерном, и использовать это в проекте, мне как джуну - это как заново начать программировать ппххп))

  • @ilyaletyarin2800
    @ilyaletyarin2800 Рік тому +3

    Лучший, сколько не искал обьяснение для чайников , нашел только тут! Для джунов прекрасно)

  • @oleg12395
    @oleg12395 2 роки тому +1

    Крутейшая подача, обалденный материал. Ничего подобного не встречал не у кого на эту тему. Спасибо Вам

  • @oivanov520
    @oivanov520 2 роки тому +1

    Супер!!! Долго искал и вот оно. Отличная подача материала! Спасибо за ваш труд!

  • @sivtsev
    @sivtsev 2 роки тому

    Видео класс. Пронумеруйте видео в плейлисте, пожалуйста. Сразу все просмотреть не удаётся, приходится видео искать по проставленым своим лайкам.

    • @TimofeyKovalenko
      @TimofeyKovalenko  2 роки тому

      Номерки как-то не очень на оптимизацию видео влияют (, поэтому просто по порядку в плей лист складываю.

  • @romankryvolapov
    @romankryvolapov 3 роки тому +5

    Канал топ)) я бы добавил, если использовать модули, можно раскомментировать флаг параллельной сборки, если не ошибаюсь, это ускоряет сборку, если модулей больше одного. Можно бы было показать сразу, как настроить koin, потому как by lazy в коде практически не встречается, и еще может приводить к утечке памяти.

    • @TimofeyKovalenko
      @TimofeyKovalenko  3 роки тому +2

      👍, про koin тоже будет, просто все постепенно, иначе каша может быть.

  • @vestanime
    @vestanime Рік тому

    очень полезная серия видео. Не передать словами насколько я благодарна автору, за такую подборку.

  • @МобильныйРазработчик-ъ3с

    Для тех,кто немного не понимаем зачем также нужно писать интерфейсы:
    1.Чтобы протестировать приложение,сделать фейковую реализацию класса,для его тестирования
    2.Чтобы не нарушать DIP (Dependency Inversion Principle) - 5 принцип SOLID
    К примеру,мы создавали в пакете домен интерфейс для репозитория,это нужно было для того,чтобы наш домен слой (interactor или usecase) работал не с конкретной реалоизацией репозитория,которая лежит в data слое,а с интерфейсом.Модули верхних уровней(Interactor или usecase) не должен зависеть от модулей нижних уровней(конкретная реализация репозитория,расположенная в data слое). Оба типа модулей должны зависеть от абстракций(от интерфейса)

  • @МихаилАкулов-ю7ж
    @МихаилАкулов-ю7ж 10 місяців тому

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

  • @yakushev4046
    @yakushev4046 2 роки тому

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

  • @МаксимБулычев-н9ш

    Спасибо за курс, он уникален, очень помог разобрвться с архитектурой

  • @Дмитрий-ъ5р7т
    @Дмитрий-ъ5р7т Рік тому

    Спасибо! Самый понятный урок про многомодульность. Завалил ТЗ проверочное, так как не занл, что это такое)) Теперь буду знать.

    • @МихаилАкулов-ю7ж
      @МихаилАкулов-ю7ж 10 місяців тому

      Roman Andrushchenko загляни. Он на укр перевел названия, но андроид разраб вся еще на русском. В конце многомодульность, чистая арх, в общем полный курс по андроид разраб без всякой платы. Преподает в Харьковском универе каком-то.

  • @PavelStr-x5w
    @PavelStr-x5w 6 місяців тому

    Большое спасибо за подробное объяснение!!!

  • @rus116orangec3
    @rus116orangec3 2 роки тому +1

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

    • @TimofeyKovalenko
      @TimofeyKovalenko  2 роки тому +1

      В планах).

    • @ЮлияБелик-я1к
      @ЮлияБелик-я1к 2 роки тому

      Да, тоже бы хотелось видео на эту тему, потому что остальные авторы объясняют не слишком понятно

  • @курбанбекАтанбай
    @курбанбекАтанбай 2 роки тому

    Лучшая серия про Clean,

  • @ПавелЗубко-ц8ч
    @ПавелЗубко-ц8ч 2 роки тому +1

    Очень полезное видео ,спасибо

  • @bair1171
    @bair1171 6 місяців тому +2

    implementation(project(":domain")) у кого ошибки попробуйте такой синтаксис

    • @azamatik3
      @azamatik3 6 місяців тому

      это то, что я искал, спасибо

  • @vlad3407
    @vlad3407 3 роки тому

    Спасибо большое!!!
    Всё очень понятно.
    Ждем MVVM)))

    • @TimofeyKovalenko
      @TimofeyKovalenko  3 роки тому

      Вышло видео по MVVM: ua-cam.com/video/KeQWIu8bA-Y/v-deo.html

    • @vlad3407
      @vlad3407 3 роки тому

      @@TimofeyKovalenko Спасибо ещё вчера посмотрел

  • @abumusa8887
    @abumusa8887 2 роки тому

    урок очень изй понятно и конечно супер как всегда, спс за урок Тимофей 😃😃

  • @PandaTop.
    @PandaTop. 3 роки тому +3

    Спасибо

  • @sovrinfo
    @sovrinfo 3 роки тому

    Спасибо за видео.Коммент в поддержку!

  • @LP-og5jg
    @LP-og5jg 3 роки тому +3

    Скорее бы видео по DI)

  • @codemachine19
    @codemachine19 2 роки тому

    комментарий для продвижения
    спасибо за труд!

  • @beworld_pasha
    @beworld_pasha 8 місяців тому

    Было бы круто посмотреть видос с features и динамическими фичами, модульное построение функционала приложения, как его отключать или подключать в зависимости от каких-то условий (мб немного теории Gradle) и как это в теории работает в рамках AAB и features delivery в Google Play. Возможно у вас есть бусти, где об этом что-то сказано?)
    Спасибо вам за замечательное видео!

    • @TimofeyKovalenko
      @TimofeyKovalenko  8 місяців тому +1

      давно зреет идея подобного видео, как нибудь дойду до него)

  • @nomugop8017
    @nomugop8017 Рік тому

    Вот этот урок прям огонь.

  • @kiril2435
    @kiril2435 Рік тому

    Вы делаете важное дело!

  • @sardoramanov8960
    @sardoramanov8960 2 роки тому

    Спасибо. Очень доступно обяснили)

  • @stasleonov5196
    @stasleonov5196 Рік тому

    Большое спасибо за труд

  • @setjy8148
    @setjy8148 2 роки тому

    4:22 эффект бабочки)

  • @samuilzhumakhanov6056
    @samuilzhumakhanov6056 2 роки тому

    Тимофей, большое Вам спасибо!

  • @Анастасиядр-п2п
    @Анастасиядр-п2п 10 місяців тому

    Спасибо!

  • @dreamer6228751
    @dreamer6228751 3 роки тому

    Спасибо, хороший ролик. )

  • @themichael8767
    @themichael8767 Рік тому

    Спасибо Вам большое 🤍

  • @azamjonostonakulov2407
    @azamjonostonakulov2407 Рік тому

    спасибо. все очень понятно. помог

  • @adiletzhankambetov1172
    @adiletzhankambetov1172 Рік тому

    шикарно!!!

  • @МагомедРашидов-э3д

    ВСЕ ПОНЯТНО! СПАСИБО!

  • @МагомедИбрагимов-н8с

    Полезное видео, спасибо!
    Было бы отлично если в следующих видео будет пример с использованием апи (rxJava 2 + retrofit 2) в рамках архитектуры.
    Основной вопрос с которым я столкнулся, это useCase должен возвращать уже модельку данных или условный обсервер, где viewModel подпишется на него и будет обрабатывать состояния. Узнать о возможных реализациях и о плюсах/минусах

    • @TimofeyKovalenko
      @TimofeyKovalenko  3 роки тому +1

      Да, это будет еще в будущих темах. По поводу возвращаемого объекта из Use Case, можно возвращать все что угодно, тут ограничений нет. Если подписка не нужна, то будет Single(если мы говорим про Rx), либо просто моделька(если корутины или не нужна многопоточность). Все зависит от того, какой функционал должен быть у данного Use Case.

  • @igornovikov6337
    @igornovikov6337 3 роки тому +1

    🔥🔥🔥

  • @senk0n
    @senk0n 2 роки тому +2

    Огромное спасибо за легкий к восприятию контент!
    будет ли видео по фича-модулям?

    • @TimofeyKovalenko
      @TimofeyKovalenko  2 роки тому +2

      Конечно, но чуть позже.

    • @purplehazer417
      @purplehazer417 2 роки тому

      @@TimofeyKovalenko ждем

    • @c01nd01r
      @c01nd01r Рік тому

      @@TimofeyKovalenko нет в планах сделать видео по фича модулям?

  • @abuiman5251
    @abuiman5251 2 роки тому

    Спасибо!👍🏻

  • @Juliet-z8z
    @Juliet-z8z 10 місяців тому +1

    Очень долго ломала голову, как же подключить :domain, ведь на новых версиях студии правила подключения зависимостей стали немного отличаться. Методом проб и ошибок получилось подключить путём implementation (project (":domain"))

  • @NikitaSevastianov
    @NikitaSevastianov 2 роки тому +1

    Заметил, что в каждом модуле есть свой манифест, тогда вопрос - выходит что можно указать свои права для каждого модуля отдельно? Например, чтобы какой-нибудь модуль в принципе не мог добраться до файловой системы или местоположения
    хорошее видео, спасибо!

  • @break8090
    @break8090 2 роки тому

    spasibo bolshoe 😊

  • @vd1009
    @vd1009 3 роки тому +3

    Класно, как к модулям подключить DI

  • @МагомедРашидов-э3д
    @МагомедРашидов-э3д 2 роки тому +1

    Если вам не составит труда, а я знаю что это долго объяснять, расскажите пожалуйста про все принципы SOLID, каждый принцип каждой буквы, мы очень очень будем признательны

    • @TimofeyKovalenko
      @TimofeyKovalenko  2 роки тому +4

      В плане это, еще будут видео по Dagger и тестированию, а после этого про SOLID.

  • @fit_team_member
    @fit_team_member 2 роки тому

    Коротко и ясно про clean.) У меня есть вопрос. Для чего нам нужно добавлять data модуль в app ?

    • @TimofeyKovalenko
      @TimofeyKovalenko  2 роки тому

      Имеете ввиду зачем создавать модуль для этого, а не пекедж?

  • @Alpha16212
    @Alpha16212 2 роки тому

    спасибо за урок!! а какие еще есть архитектуры кроме "Clean" в андроид?

  • @relax7299
    @relax7299 2 роки тому +1

    Большое спасибо) За несколько уроков узнал больше чем за год работы программистом) Скажите пожалуйста а вот на некоторых проектах на модули разделяют конкретные фичи каждая из которых в себе содержит data app и presentation, как тогда внутри этих фич использовать разделение на модули data app presentation? Делать модули в модулях?

    • @TimofeyKovalenko
      @TimofeyKovalenko  2 роки тому +1

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

    • @relax7299
      @relax7299 2 роки тому

      @@TimofeyKovalenko Понял. Спасибо большое!

  • @dr.padding4087
    @dr.padding4087 2 роки тому

    Добрый день! Спасибо большое за очень полезные видео! Хотелось бы еще знать что такое фича модули и как с этим работать.

  • @renheyzer5125
    @renheyzer5125 2 роки тому +2

    Тимофей очень полезное видео.
    У меня вопрос. В модуль какого типа ложить package "base" - там где находятся base fragment и т.д.?

    • @TimofeyKovalenko
      @TimofeyKovalenko  2 роки тому +2

      Типа имеете ввиду андроид или java модуль? Зависит от того к чему эти классы относятся. Обычно создают отдельные модули такие как "core-design", "core-..еще что то", где находятся общие классы для разных модулей.

    • @alexkoty5877
      @alexkoty5877 2 роки тому +1

      Расскажите пожалуйста про это с примерами в своих видео, что ещё за core?

  • @radiorobots
    @radiorobots 7 місяців тому

    Тимофей, добрый день! Очень понравились ваши видео, стал лучше понимать чистую архитектуру. В данный момен открыл свое старое приложение ModbusMaster и решил переписать его под чистую архитектуру. Вкратце приложение соединяется по Блютузу с Ардуино и обменивается с ним информацией. Столкнулся с вопросом в какой слой отнести Блютуз. По логике это слой данных. Но для работы с Блютузом нужна тесная связь с Активити, с ее жизненным циклом. У меня раньше это было через колбэки сделано. А сейчас слой данных должен общаться только с доменом и получается каша. Либо это отдельный слой особенный какой-то должен быть, например, Device? По блютузу вообще мало инфы современной в инете, все примеры десятилетней давности. Буду благодарен, если подскажете или направите в нужном направлении, как реализовать обмен по блютуз в чистой архитектуре. Или снимите видео, думаю тема многим будет интересна.Заранее, спасибо.

    • @TimofeyKovalenko
      @TimofeyKovalenko  6 місяців тому

      Из активити вам нужен ее жизненный цикл же? Вариантов много может быть:
      1) Можно сделать отдельный модуль, это вполне рабочий вариант
      2) Можно отнести в слой data, но я бы все равно вынес в отдельный слой. Но вот общаться с ним можно через domain. Например завернуть все за корутиновской Flow.
      Если же вам нужен именно объект активити, что не очень хорошо, то да, лучше отдельный модуль и с его api напрямую работать.

  • @bolnoi8
    @bolnoi8 2 роки тому

    Как следить за каждым gradle файлом в модулях? Надо везде обновлять одни и теже библиотеки, везде следить за версией SDK и так далее. Ну и хотелось бы поподробнее про виды модулей, про имена пакетов внутри модулей.

    • @TimofeyKovalenko
      @TimofeyKovalenko  2 роки тому

      Все зависимости можно вынести в один общий файл, что бы не следить за всеми модулями. Надо будет сделать видео про это).

  • @UZEXCEL
    @UZEXCEL Рік тому

    Здравствуйте, спасибо большое за такие замечательные уроки. А для маленьких проектов (экранов 8-10) где работают 2-3 разработчика это не будет считаться OVER ARCHITECTURE?

    • @TimofeyKovalenko
      @TimofeyKovalenko  Рік тому

      Базовые принципы разделения в любом проекте не будут считаться лишним. Но если уверены, что проект не обрастет новыми фичами можно и сократить, например не использовать domain. Но жертвовать разделением entity я бы не стал

  • @ИльяВишняк-м3ь
    @ИльяВишняк-м3ь 2 роки тому

    что делать если выдаёт Cannot access 'java.lang.Object' когда пытаюсь использовать rx в любом модуле кроме app?

  • @uservhhrXdgko1234
    @uservhhrXdgko1234 2 роки тому

    Тимофей, правильно ли я понимаю что в рамках данного ролика рассматривается пример MVP? Так как MVVM by Google, подразумевает одностороннюю связь между слоями и зависимости по соглашению гугла должны быть вот такого плана UI -> DOMAIN -> DATA

    • @TimofeyKovalenko
      @TimofeyKovalenko  2 роки тому

      Мы тут не рассматривали MVVM/MVP, тут общая концепция слоев. В данном примере у нас просто активити работает с юз кейсом, MVVM/MVP паттерны тут пока не рассматривали. Посмотрите дальше в плей листе, там есть ролик, где мы добавляем MVVM.

    • @uservhhrXdgko1234
      @uservhhrXdgko1234 2 роки тому

      @@TimofeyKovalenko Спасибо, я уже все ролики глянул, когда писал комментарий не подумал прокрутить плейлист) Все доходчиво, все по полочкам)

  • @24Mrnobody
    @24Mrnobody Рік тому

    Ради интереса разбил свой пэт на модули. За три недели приложение прилично выросло. DTO-шки, Db-модели, entity, mapper-ы, и по логике теперь захотел чтобы после загрузки с сети, положенная db-модель обновлялась через LiveData. Как прокинуть через domain лайвдату в презентейшн слой, если у нас голый котлин/джава? Можно ли так поступать с точки зрения архитектуры?

    • @TimofeyKovalenko
      @TimofeyKovalenko  Рік тому

      Если у вас есть корутины, то лучше используйте Flow для этого, а так конечно же, желательно избежать LiveData в домене, но даже если добавить ничего страшного ;)

  • @ДмитрийДенищук-ц4в

    Все круто. Спасибо. Есть вопрос относительно LiveData в репозитории Domain модуля. Как организовать прослушивание данных к примеру в Room, если Domain модуль самый независимый и LiveData не поддерживается в нем?

    • @TimofeyKovalenko
      @TimofeyKovalenko  Рік тому

      Я бы порекомендовал использовать корутины. Domain то самый независимый, но глобальные библиотеки, такие как корутины, rx и подобные, в любом случае там будут. А LiveData конечно лучше туда не закидывать.

    • @ДмитрийДенищук-ц4в
      @ДмитрийДенищук-ц4в Рік тому

      @@TimofeyKovalenko Еще раз большое спасибо

  • @АндрейКоролев-л8у

    Как потом из этих модулей aab собрать, для размещения в google play?

    • @TimofeyKovalenko
      @TimofeyKovalenko  Рік тому

      Так же как и обычно), никаких отличий нет.

  • @coffemilk652
    @coffemilk652 11 місяців тому

    А как будет выглядеть структура модулей если будет несколько экранов ?

    • @TimofeyKovalenko
      @TimofeyKovalenko  11 місяців тому

      Тоже самое будет. А если вы хотите разделять экраны на модули (фича модули), то либо тоже самое. + фича модули, либо у фичей могут быть свои домен и дата.

  • @СергейСитько-л9б
    @СергейСитько-л9б 2 роки тому

    Апп не знает о дате). Или можно на прямую репу использовать )

    • @TimofeyKovalenko
      @TimofeyKovalenko  2 роки тому

      Знает, вы же должны все вместе собирать как то. А вот презентейшен не должен знать. В нашем примере презентейшен лежит внутри апа, поэтому конечно доступ есть.

  • @3dportableinc64
    @3dportableinc64 2 роки тому

    как использовать один модуль в нескольких приложениях?
    Хочу иметь возможность менять что то в его классах, методах из одного приложения, чтобы эти изменения отображались и в другом приложении.

    • @TimofeyKovalenko
      @TimofeyKovalenko  2 роки тому

      Тут разные подходы могут быть. Если оба приложения схожи и являются одним продуктом, то можно просто создать несколько app модулей внутри одного проекта, и они будут иметь общие зависимости от других модулей. Можно сделать модуль в виде библиотеки, которая лежит отдельно и подтягивается разными приложениями: например это может быть либа выложенная на mvnrepository или свой сервер, либо просто физически рядом лежать.

  • @coffemilk652
    @coffemilk652 Рік тому

    Подскажи как вы у себя в проектах решате проблему с Parcelable передаваемый в аргементы фрагментов. Оно вроде как работает, но в отчетах крашлитика у людей крашится приложение, причем в бэкграунде. Даже стал задумываться вообще отказаться от Parcelable и передвать примитивами. Еще момент parcelable у меня генерируется анотацией @Parcelize, сам я его не описываю. И еще в этот parcelable иногда входит объект из sealed класса, тоже парселизуемый.

    • @TimofeyKovalenko
      @TimofeyKovalenko  Рік тому

      Скорей всего, что-то напортачили с реализацией или сгенерированный код не верный. А вообще, лучше не использовать Parcelable, а передавать только минимум в виде примитивов)

  • @РоманМаринов-ъ3ь
    @РоманМаринов-ъ3ь 2 роки тому

    Тимофей, подскажите, создавая приложение с нуля, надо сразу разделять его на модули, т.е. как бы сразу определяя возможность доступа к объектам из других модулей?

    • @TimofeyKovalenko
      @TimofeyKovalenko  2 роки тому

      Лучше сразу, потому что на старте вы закладываете скелет. Если на старте все правильно сделать, потом функционал вешать на это все в разы проще.

  • @ДмитрийЛунин-ю5ц
    @ДмитрийЛунин-ю5ц 2 роки тому

    Подскажите пожалуйста,
    Получается тогда какие виды архитектуры приложения бывают? Чтобы на собесе отвечать. Я просто раньше думал, что MVP, MVVM, MVC и MVI это как раз и есть виды архитектуры.

    • @TimofeyKovalenko
      @TimofeyKovalenko  2 роки тому

      Их достаточно много, не говоря уже о самописных, у которых нет названия))). Но, те которые применяются сейчас в мобильной разработке, как правило различные вариации Clean Architecture - много вариантов с фича модулями, варианты с разными слоями приложения отличными от классики data, domain и тд. особо то и названий конкретных даже нет у них,

  • @starcadster
    @starcadster 2 роки тому

    Тимофей, а вот этот код который вы в примере используете - есть ли он где-то на гитхабе у вас?

    • @TimofeyKovalenko
      @TimofeyKovalenko  2 роки тому +1

      Нет, код стараюсь никогда не скидывать, иначе студенты ничего не делают сами)

    • @starcadster
      @starcadster 2 роки тому

      @@TimofeyKovalenko Я учусь немного подругому. Я стараюсь перед глазами иметь весь материал, в виде кода - максимально локанично. И отталкиваясь - делать свое. Буду благодарен если вы этим вашим нанопроектом по Clean поделитесь с вашим покорным слугой) Заранее благодарен.)

  • @PandaTop.
    @PandaTop. 3 роки тому +3

    Курс платный ?

    • @TimofeyKovalenko
      @TimofeyKovalenko  3 роки тому +4

      Конечно, на проверку ДЗ и созвоны 1:1 уходить очень много времени. Мне хоть и очень нравится преподавание, но это очень много сил забирает, что бы бесплатно учить. Да и когда бесплатно делаешь, сложно регулярность поддерживать, быстро энтузиазм кончается).

    • @evgeniy9248
      @evgeniy9248 3 роки тому +1

      Поверь) инвестиция в это, окупается быстро =)
      Если дойдёшь до первой работы и пойдёшь дальше, поверь) будешь готов отдать и х2 и х3 бабла по сравнению с тем что отдал)
      Сильные джуны с ходу прыгают на ЗП в 1000$ =) а дальше больше, мало какая профессия может похвастаться этим ;)

  • @ЮрійБережний-с7ъ
    @ЮрійБережний-с7ъ 2 роки тому

    Что делать, если в слое domain есть модели и эти модели должны быть Parcelable ? Как сделать эти модели Parcelable ?

    • @TimofeyKovalenko
      @TimofeyKovalenko  2 роки тому

      Parcelable это чисто андроидовская штука, это не ответственность domain слоя и такого там быть не должно. Для этого делайте отдельную модельку на уровне presentation для передачи данных. А лучше вообще постарайтесь избежать передачи целых объектов.

  • @MxMayers
    @MxMayers 2 роки тому

    Все просмотрел все супер! осталась неясность про подключение пакетов в модулях, столкнулся с тем что в domain недоступен android.util.Log решил через отдельный пакет логировать поставил Timber инициализирую его в Application() соответственно подключен он как зависимость в :app build.gradle а использовать его хочу в domain прописываю импорт в градле domain, сборка выдает "Declare repository providing the artifact" что в таком случае делать?

    • @MxMayers
      @MxMayers 2 роки тому

      После разбиения на модули появилось ощущение что файлы проекта лежат друг от друга в 10ти метрах 🤔 и перемещаться между ними приходится физически вставать и ходить то за одним файлом то за другим 🤷‍♀️

    • @TimofeyKovalenko
      @TimofeyKovalenko  2 роки тому

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

  • @alexkoty5877
    @alexkoty5877 2 роки тому

    Тимофей, расскажите пожалуйста как делить приложение на фиче модули и по клин одновременно?
    Тоесть был один модуль - мод1
    И теперь стало:
    Мод1-domain
    Мод1-presentation
    Мод1-data
    Так что-ли? Теперь как бы стало модулей в 3 раза больше. Так правильно?
    Спасибо

    • @TimofeyKovalenko
      @TimofeyKovalenko  2 роки тому

      Тут разные подходы могут быть. Как правило на фичи делят presentation модуль, а domain и data остаются как есть. Но в очень большом проекта(очень очень большом с десятками программистов на каждую фичу), каждая фича может иметь свой домен и дату. Об этом еще попозже буду снимать видео.

    • @alexkoty5877
      @alexkoty5877 2 роки тому

      @@TimofeyKovalenko спасибо за ответ, Тимофей
      Но чисто логически если у фиче модулей одна база данных то они тесно связаны, а они в теории должны вообще друг друга не знать, разве нет?

    • @TimofeyKovalenko
      @TimofeyKovalenko  2 роки тому +1

      А какая разница, что база одна и та же? Фича работает с юз кейсами и все, больше она ничего не знает. Мыслите всегда публичными методами, которые вам доступны, а то, что за ними, пользователя не должно волновать.

    • @alexkoty5877
      @alexkoty5877 2 роки тому

      @@TimofeyKovalenko спасибо
      Пока сложно это все, буду ждать Ваших видео

    • @alexkoty5877
      @alexkoty5877 2 роки тому

      @@TimofeyKovalenko сделайте пожалуйста видео по фиче модулям и их сложностям

  • @trunker2010
    @trunker2010 3 роки тому

    А если у меня вместо бд будет использоваться singleton, общий принцип такой же?

  • @agp1444
    @agp1444 2 роки тому

    MVVM это именно архитектурный паттерн

    • @TimofeyKovalenko
      @TimofeyKovalenko  2 роки тому

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

    • @agp1444
      @agp1444 2 роки тому

      @@TimofeyKovalenko не знаю, какой линейкой вы меряете, но эти 4 буквы полностью определяют, на каких принципах будет функционировать приложение, и как связаны его составляющие. можно конечно вьюмодель называть маленькой частью, ответственной за состояние экрана, забыв обо всей логике. и, опять же, смотря что называть архитектурой. сингл-активити тоже по-своему архитектура

  • @alexandr.semen4uk
    @alexandr.semen4uk 2 роки тому

    Добрый день, по просьбе автора задаю вопрос: -Почему мы в активити инициализируем репозиторий, насколько я понимаю это неправильно. Не должен ли это делать, какой-то промежуточный слой?

    • @TimofeyKovalenko
      @TimofeyKovalenko  2 роки тому +1

      Должно. В след. видео мы делаем это в вью модел фабрике, а потом в DI. Просто, когда сразу все даешь, у студентов каша в голове. Поэтому все постепенно).

  • @OCEH6
    @OCEH6 2 роки тому

    Огромное спасибо! Отличный урок!

  • @Alex-n7p7o
    @Alex-n7p7o Рік тому

    Спасибо

  • @davron_xolboyev
    @davron_xolboyev 2 роки тому

    Спасибо!

  • @mraleks4474
    @mraleks4474 Рік тому

    спасибо! 👍