Android studyjam - The clean way

Post on 15-Apr-2017

600 views 1 download

transcript

ANDROID STUDY JAM

THE CLEAN WAY

CARLOS MORERA DE LA CHICA

Github - cmc00022 @CarlosMChica

G+ CarlosMoreradelaChica

SOLID PRINCIPLES

SOLID PRINCIPLES AKA THE BIBLE

A class should have only a single responsibility.

SINGLE RESPONSIBILITY PRINCIPLE (SRP)

SOLID PRINCIPLES AKA THE BIBLE

Software classes should be open for extension, but closed for modification.

OPEN/CLOSED PRINCIPLE

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

SOLID PRINCIPLES AKA THE BIBLE

Many client-specific interfaces are better than one general-purpose interface.

INTERFACE SEGREGATION PRINCIPLE

SOLID PRINCIPLES AKA THE BIBLE

Depend upon Abstractions. Do not depend upon concretions.

DEPENDENCY INVERSION PRINCIPLE

THE DIRTY WAYANDROID STUDY JAM

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

CLEAN ARCHITECTURETHE SOLUTION

CLEAN ARCHITECTURE

DEPENDENCY RULE: NOTHING IN AN INNER CIRCLE CAN KNOW ANYTHING AT ALL ABOUT SOMETHING IN AN OUTER CIRCLE

LAYERS AND FLOW

DELIVERY MECHANISM

DOMAIN

DATA

“MAKE IMPLEMENTATION DETAILS SWAPPABLE.”

Robert C. Martin

CLEAN ARCHITECTURE

“A GOOD ARCHITECTURE ALLOWS FRAMEWORKS TO ACT AS PLUGINS TO THE APP”

Robert C. Martin

CLEAN ARCHITECTURE

ANDROIDCLEAN ARCHITECTURE

CLEAN ARCHITECTURE - ANDROID

MODULES DEPENDENCIES

▸ Blue - Java module

▸ Green - Android module

CLEAN ARCHITECTURE - ANDROID

ISOLATE DOMAIN MODEL

▸ Pure domain model

▸ Layers models

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.

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

QUESTIONS?

https://github.com/cmc00022/Sunshine-Version-2