android studyjam - the clean way
TRANSCRIPT
![Page 1: Android studyjam - The clean way](https://reader034.vdocuments.mx/reader034/viewer/2022042707/58f136111a28ab73158b4605/html5/thumbnails/1.jpg)
ANDROID STUDY JAM
THE CLEAN WAY
CARLOS MORERA DE LA CHICA
Github - cmc00022 @CarlosMChica
G+ CarlosMoreradelaChica
![Page 2: Android studyjam - The clean way](https://reader034.vdocuments.mx/reader034/viewer/2022042707/58f136111a28ab73158b4605/html5/thumbnails/2.jpg)
SOLID PRINCIPLES
![Page 3: Android studyjam - The clean way](https://reader034.vdocuments.mx/reader034/viewer/2022042707/58f136111a28ab73158b4605/html5/thumbnails/3.jpg)
SOLID PRINCIPLES AKA THE BIBLE
A class should have only a single responsibility.
SINGLE RESPONSIBILITY PRINCIPLE (SRP)
![Page 4: Android studyjam - The clean way](https://reader034.vdocuments.mx/reader034/viewer/2022042707/58f136111a28ab73158b4605/html5/thumbnails/4.jpg)
SOLID PRINCIPLES AKA THE BIBLE
Software classes should be open for extension, but closed for modification.
OPEN/CLOSED PRINCIPLE
![Page 5: Android studyjam - The clean way](https://reader034.vdocuments.mx/reader034/viewer/2022042707/58f136111a28ab73158b4605/html5/thumbnails/5.jpg)
SOLID PRINCIPLES AKA THE BIBLE
Objects in a program should be replaceable with instances of their subtypes without altering the correctness of that program.
LISKOV SUBSTITUTION PRINCIPLE
![Page 6: Android studyjam - The clean way](https://reader034.vdocuments.mx/reader034/viewer/2022042707/58f136111a28ab73158b4605/html5/thumbnails/6.jpg)
SOLID PRINCIPLES AKA THE BIBLE
Many client-specific interfaces are better than one general-purpose interface.
INTERFACE SEGREGATION PRINCIPLE
![Page 7: Android studyjam - The clean way](https://reader034.vdocuments.mx/reader034/viewer/2022042707/58f136111a28ab73158b4605/html5/thumbnails/7.jpg)
SOLID PRINCIPLES AKA THE BIBLE
Depend upon Abstractions. Do not depend upon concretions.
DEPENDENCY INVERSION PRINCIPLE
![Page 8: Android studyjam - The clean way](https://reader034.vdocuments.mx/reader034/viewer/2022042707/58f136111a28ab73158b4605/html5/thumbnails/8.jpg)
THE DIRTY WAYANDROID STUDY JAM
![Page 9: Android studyjam - The clean way](https://reader034.vdocuments.mx/reader034/viewer/2022042707/58f136111a28ab73158b4605/html5/thumbnails/9.jpg)
ANDROID STUDY JAM - THE DIRTY WAY
GOOGLE, IS THIS REALLY WHAT YOU TEACH STUDENTS?
▸ SunshineSyncAdapter, the GOD class.
▸ DetailFragment and how to mix data base code with ui formatting
![Page 10: Android studyjam - The clean way](https://reader034.vdocuments.mx/reader034/viewer/2022042707/58f136111a28ab73158b4605/html5/thumbnails/10.jpg)
CLEAN ARCHITECTURETHE SOLUTION
![Page 11: Android studyjam - The clean way](https://reader034.vdocuments.mx/reader034/viewer/2022042707/58f136111a28ab73158b4605/html5/thumbnails/11.jpg)
CLEAN ARCHITECTURE
DEPENDENCY RULE: NOTHING IN AN INNER CIRCLE CAN KNOW ANYTHING AT ALL ABOUT SOMETHING IN AN OUTER CIRCLE
![Page 12: Android studyjam - The clean way](https://reader034.vdocuments.mx/reader034/viewer/2022042707/58f136111a28ab73158b4605/html5/thumbnails/12.jpg)
LAYERS AND FLOW
DELIVERY MECHANISM
DOMAIN
DATA
![Page 13: Android studyjam - The clean way](https://reader034.vdocuments.mx/reader034/viewer/2022042707/58f136111a28ab73158b4605/html5/thumbnails/13.jpg)
“MAKE IMPLEMENTATION DETAILS SWAPPABLE.”
Robert C. Martin
CLEAN ARCHITECTURE
![Page 14: Android studyjam - The clean way](https://reader034.vdocuments.mx/reader034/viewer/2022042707/58f136111a28ab73158b4605/html5/thumbnails/14.jpg)
“A GOOD ARCHITECTURE ALLOWS FRAMEWORKS TO ACT AS PLUGINS TO THE APP”
Robert C. Martin
CLEAN ARCHITECTURE
![Page 15: Android studyjam - The clean way](https://reader034.vdocuments.mx/reader034/viewer/2022042707/58f136111a28ab73158b4605/html5/thumbnails/15.jpg)
ANDROIDCLEAN ARCHITECTURE
![Page 16: Android studyjam - The clean way](https://reader034.vdocuments.mx/reader034/viewer/2022042707/58f136111a28ab73158b4605/html5/thumbnails/16.jpg)
CLEAN ARCHITECTURE - ANDROID
MODULES DEPENDENCIES
▸ Blue - Java module
▸ Green - Android module
![Page 17: Android studyjam - The clean way](https://reader034.vdocuments.mx/reader034/viewer/2022042707/58f136111a28ab73158b4605/html5/thumbnails/17.jpg)
CLEAN ARCHITECTURE - ANDROID
ISOLATE DOMAIN MODEL
▸ Pure domain model
▸ Layers models
![Page 18: Android studyjam - The clean way](https://reader034.vdocuments.mx/reader034/viewer/2022042707/58f136111a28ab73158b4605/html5/thumbnails/18.jpg)
TIPS & TRICKS
HOW TO AVOID WRITING STINKY CODE
▸ THINK before coding.
▸ Make sure your code follow all/most of SOLID principles.
▸ Pay special attention to class NAMES and responsibilities.
▸ Create LAYERED modules to control correct dependencies.
![Page 19: Android studyjam - The clean way](https://reader034.vdocuments.mx/reader034/viewer/2022042707/58f136111a28ab73158b4605/html5/thumbnails/19.jpg)
REFERENCES
▸ Uncle Bob - The Clean Architecture
▸ Christian Panadero - My way to clean android
▸ Pedro Gomez - Effective Android UI
▸ Jorge Barroso - Forgetting Android
▸ José M Pereira - Limpiando espero la arquitectura q yo quiero
▸ Fernando Cejas - Android the clean way
▸ Clean Coders videos
![Page 20: Android studyjam - The clean way](https://reader034.vdocuments.mx/reader034/viewer/2022042707/58f136111a28ab73158b4605/html5/thumbnails/20.jpg)
QUESTIONS?