Всем привет!
В Андроид-мире архитектурой в общем и Чистой архитектурой в частности уже никого не удивишь. На практически любой конференции/митапе всегда будет доклад-другой об этом. И на самом деле это очень здорово, что разработчики все больше внимания уделяют данному вопросу. Ведь в итоге мы получаем работоспособное, стабильное и простое в сопровождении приложение. Я не беру в расчет героев-одиночек, которые пилят крутые приложения без каких-либо архитектур, и живут прекрасно. Дай Бог здоровья этим людям, ведь без них я даже не представляю, что будет с приложением потом.
Андроид-разработчикам больше приживается подход под названием "Clean Architecture". На самом деле, подход изначально презентовался Бобом Мартином, и на хабре можно найти несколько статей о том, как её видят разработчики Go и разработчики Python, например.
Основная идея подхода состоит в том, чтобы сделать приложение, которое:
- Не зависит от UI
- Не зависит от БД
- Не зависит от внешних фреймворков
- Является тестируемым
Таким образом, в хорошо спроектированном приложении можно "откладывать" решения до того момента, когда они действительно необходимы. Если разработка затянется, и вместо одной технологии хранения появится другая, или если ваше приложение вдруг станет хайповым, и хранилище "на файликах" перестанет справляться с нагрузкой - возможность лёгкой смены решения сыграет вам на руку. В итоге вы получаете слоистую и гибкую архитектуру. Вы получаете единый подход в осмыслении вашего приложения.
На текущий момент в интернете можно найти большое количество информации по этой теме. Как это часто бывает, местами она противоречит друг другу, местами она просто раскидана на множество частей. Но самое грустное заключается в том, что когда разработчик начинает использовать данный подход, он зачастую не знает с чего начать, и он спотыкается о множество деталей и нюансов.
В январе 2017 года был создан архитектурный чатик, призванный как раз помогать и приходить к чему-то единому в архитектуре. И в этом чатике мы в очередной раз убедились, что очень часто задаются одни и те же вопросы, и люди проходят по одним и тем же граблям. Не хватает просто хорошего практического рассмотрения определенных нюансов и примеров решения конкретных кейсов.
Именно поэтому мы решили попробовать создать некий "Clean Architecture CookBook" - ресурс, на котором можно будет посмотреть все элементы подхода "от А до Я", с теоретическим обоснованием и, что немаловажно, практическими примерами.
У нас за плечами большой опыт написания самых различных приложений с Чистой архитектурой, и мы уверенно можем сказать, что данный подход работает и делает нашу жизнь намного проще.
Итак, перед вами версия 0.1. Первый набросок, который состоит из трех частей:
- Теория. В этом разделе представлено краткое теоретическое введение в тему Чистой архитектуры.
- Практические вопросы. Обзор наиболее задаваемых вопросов в виде "Проблема - Решение".
- Практические кейсы. Самая сладкая часть. Реальные жизненные и нетривиальные кейсы, реализованные в парадигме Чистой архитектуры.
Уже подробно рассмотрены Аутентификация и Визарды в Чистой архитектуре. - Многомодульность в Android с точки зрения архитектуры. От А до Я
Подробно рассмотрен переезд на многомодульность.
Сразу оговорюсь, представленное в CookBook мнение не является абсолютной истиной. Абсолютная истина не достижима, тем более в архитектуре. Но мы сделали попытку, и будем безмерно рады, если вы оставите свою обратную связь в виде звездочек и предложений/замечаний в виде issues и pull requests, которые можно обсудить либо в задачах, либо в чате.
Присоединяйтесь к проекту! Сделаем нашу программистскую жизнь проще и лучше! За Чистую архитектуру!
Авторы:
Евгений Мацюк(@eugene_matsyuk)
Артур Бадретдинов(@gaketo)
Александр Блинов(@xanderblinov)
Александр Жеребцов(@mansonheart)
и все-все-все в архитектурном чатике