Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
  • Oct 20 2016 21:52
    @rus-speaking banned @ImangazalievM
  • Oct 12 2016 11:36
    @rus-speaking banned @postflow
  • Jan 31 2016 12:15
    @rus-speaking banned @Nikkola
  • Dec 01 2015 16:39
    @rus-speaking banned @StNekroman
  • Nov 15 2015 20:35
    User @rus-speaking unbanned @skilz2012 from this room
  • Nov 11 2015 12:32
    @rus-speaking banned @skilz2012
prokhor-andrew
@prokhor-andrew
большое спасибо)
Andrew Kaganets
@DarkMentat
Хай народ, кто-то смотрел на Architecture Components? Заметили какие-то подводные камни, и по ощущениям, удобнее чем обычные mvp, mvvm?
VolodymyrBaisa
@VolodymyrBaisa
Привет народ, вопрос по архитектуре наверное. Как сделать общий interface для двух классов если у этих классов есть два метода setData(String a) это первый клас и второй клас setData(int b)
Может паттерн фабрика?
Andrew Kaganets
@DarkMentat
interface<T>{
setData(T data); }
типа женерики. Но зачем все это?
Roman Shakirov
@rpagyc
@DarkMentat переписываю свои приложения на ААС. решил отказаться от Nucleus и StorIO. пока впечатления положительные, подход от МВП/МВВМ не особо отличается.
Rustem Saitkulov
@atetc
@rpagyc а можно ссылочки по сабжу?
Rustem Saitkulov
@atetc
Благодарю!
mirabon
@mirabon
Использование (расширение) класса сервиса интерфейсом другого объекта в качестве колбека является нормальной практикой?
SiarheiSm
@SiarheiSm
добрый день
не подскажите есть ли смысл в одном проэкте использовать moxy и dagger?
Yuri Shmakov
@senneco
Так и используем - никаких противоречий нет
SiarheiSm
@SiarheiSm
@senneco спасибо
Vladimir
@Stixxxxx
ребят, есть работа для андройд разработчиков?
Optimus Prime
@optimusprime2014
всегда есть)))
Kirill Ashikhmin
@KirillAshikhmin
@Stixxxxx https://gitter.im/rus-speaking/android-job тут смотри
Anton Belka
@dark-al
Всех приветствую. Кто как строит архитектуру приложения на практике? На листике, сразу код пишет или в голове держит? Я уже почти год работаю разработчиком и понимаю, что я не умею строить архитектуру. Возьмем например задачу, когда в приложение необходимо внедрить к примеру 5 биллинг систем. У каждой билинг системы свои методы и т.д. и все это нужно обернуть в некий Manager или Helper (не знаю как назвать), методы которого мы будем дергать он уже дальше разруливать выбирать нужную биллинг систему и т.п. в зависимости от условий. Может какую-то книгу посоветуете прочесть или статью?
Toporik
@Toporik
"Возьмем например задачу, когда в приложение необходимо внедрить к примеру 5 биллинг систем." :)
Anton Belka
@dark-al
@Toporik а что не так?
swh
@sswwhh

я не самый большой специалист, но может ответ поможет

архитектура приложения - вопрос скользский. хороших книг пока нет, все пользуются статьями с хабра и медиума.
то, что вы за год начали понимать, что не рубите в построении архитектуры, это хорошо. обычно это доходит много позже.
по большему счёту, чтобы нормально научиться писать, нужно понять: (1) языковые примитивы - синтаксис и мелочи, (2) стилистику языка, сахар (3) патерны проектирования
а после этого беритесь за создание архитектур
здесь поможет принцип SOLID (https://ru.wikipedia.org/wiki/SOLID_(объектно-ориентированное_программирование), читайте хоть на вики и пробуйте-пробуйте-пробуйте), и тут поймите, (1) как создавать правильные классы, (2) как и что нужно абстрагировать

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

@dark-al ^
Anton Belka
@dark-al
@sswwhh про SOLID знаю, но одно дело знать теорию, второе - применять на практике.
swh
@sswwhh
@dark-al постарайтесь найти человека, который тет-а-тет, за пару часов покажет вам, как теория с практикой связана. я когда-то именно так и научился.
Ghedeon
@Ghedeon
у кого-то построен View layer как тут? https://www.youtube.com/watch?v=0IKHxjkgop4
такой, Redux на андроиде. Та же идея, другими словами: https://proandroiddev.com/taming-state-in-android-with-elm-architecture-and-kotlin-part-1-566caae0f706
Ghedeon
@Ghedeon
мне интересно, если кому-то зашел такой подход. Боюсь, во вьюхе будут дикие if-ы, чтобы разруливать состояние. Плюс, весь скрин рендерится на каждый чих
moonsweel
@moonsweel
почему весь? только те view, которые надо поменять
viewmodel/presenter меняет только то, что нужно
состояние хранит не view, а vm/presenter
Ghedeon
@Ghedeon
и в чем новость, если так всегда и делали? ты точно видео просмотрел? Может я не догнал, но там вводится понятие состояния для вью. Т.е. у тебя не гора методов, которые обновляют мелкие вьюшки, а один толстый render метод, куда контроллер пушит состояние всей вьюхи. И оно рисуется. Профит мол в том, что легко тестировать, просто посылаешь состояние с нужными полями, вызываешь render и у тебя вью всегда в нужном положении.
moonsweel
@moonsweel
я смотрел, но давно :)
по-моему, там поинт был в том, что надо разделять состояния нижнего и верхнего слоев
Ghedeon
@Ghedeon
мм.. не, глянь тут еще https://academy.realm.io/posts/kau-lee-kase-reduxing-ui-borrowing-from-web/. Мол данные по одному каналу всегда в одну сторону идут. Ты не обновляешь TextView, а пушишь целый ViewState и View уже отрисует, что изменилось
Ghedeon
@Ghedeon
сейчас многие по redux ссутся.. Wharton там говорит, что может на андроиде нет смысла его полностью копировать. Видел redux-like фреймворки под андроид на Medium кто-то постил. Думал, может кто-то пробовал.
moonsweel
@moonsweel
ну допустим, и сколько у тебя if-ов будет, 5?
экраны-то мелкие, много данных все равно не отобразишь
Ghedeon
@Ghedeon
как это мелкие?) У меня большой экран! that what she said... Лейблы, кнопки, подсказки, лоадинги, тосты с ошибками.. Накапливается, монстрик такой. Оверхед еще этот, слишком многое перерисовывается по 10 раз в пустую.
еще не решил, если стало лучше
Pankra
@Pankra

hi! читаю код, доставшийся по наследству, возник вопрос по MVC: С вызывает у V метод V.getField().setVisibility(condition ? VISIBLE : GONE)
насколько это вяжется с разделением ответственности С и V?
может быть у V нужен метод V.setFieldVisible(condition)?

почему спрашиваю - возникла ситуация, что код выполняется в коллбаке и возможна ситуация, когда V, в данном случае Fragment уже не !isAdded() и куда-то эту проверку надо воткнуть. для текущей реализации у меня получится V.getField().setVisibility(condition && V.isAdded() ? VISIBLE : GONE)
во втором варианте проверку isAdded можно сделать на стороне V, что мне кажется логичнее

Artem Rudometkin
@perfectplayer
Основная идея при разделении на слои в том, что Controller/Presenter ничего о View не знает, знает только её контракт. Соответственно всё должно свестись к тому, что C/P отдаёт команду V, а та уже оперирует со своей иерархией самостоятельно. Одно из перимуществ такой архитектуры - возможность иметь набор взаимозаменяемых View, реализующих определённый контракт.
Pankra
@Pankra
@perfectplayer спасибо, все по сути и понятно!
Artem Rudometkin
@perfectplayer
@Pankra незачто :)
Anton Belka
@dark-al
Всем, привет! Куда впиливать billing library если использую такую архитектуру: https://github.com/ribot/android-boilerplate
К data manager'у привязывать?
mirabon
@mirabon
Запросы к серверу должны лежать в классе презентере? А возвращаемый результат заполняет объект - это модель? Отображение всех данных с объекта или другая реакция (вибро, звук и т.п.) - это вью?
blognat
@blognat

@mirabon имхо, непосредственное код запроса должен быть в модели. Сам запрос в презентере. Модель реализует БЛ. Принимает данные, оперирует ими, передает данные в презентер, а не напрямую (например, на сервер), а презентер в свою очередь отдаёт команды.

Второй вопрос - вибро, звук - это все представление, следовательно - view

blognat
@blognat

Вопрос по mvp: есть два view-активити, у каждого по презентеру и есть 1 класс модели.
Надо получить из первой активити данные во 2 презентер, чтобы он запустил метод модели с этими данными.
Не пойму как это сделать с учетом соблюдения принципа mvp.

Я получаю данные из первой активити в первый презентер, который (по идеи) должен передать данные в второй презентер через модель. Или нет?

xomyc
@xomyc
@blognat android10/Android-CleanArchitecture#153
Если в кратце то кошерного решения нет, самое распространенное - использовать событийную систему (напирмер EventBus)