Kata Contacts

26
Pedro V. Gómez Sánchez - [email protected] - @pedro_g_s - github.com/pedrovgs Karumi Dojo: Kata Contacts Pedro Vicente Gómez Sánchez Senior Mobile Developer at Karumi [email protected] @pedro_g_s github.com/pedrovgs

Transcript of Kata Contacts

Page 1: Kata Contacts

Pedro V. Gómez Sánchez - [email protected] - @pedro_g_s - github.com/pedrovgs

Karumi Dojo: Kata ContactsPedro Vicente Gómez SánchezSenior Mobile Developer at Karumi

[email protected]@pedro_g_sgithub.com/pedrovgs

Page 2: Kata Contacts

Pedro V. Gómez Sánchez - [email protected] - @pedro_g_s - github.com/pedrovgs

Page 3: Kata Contacts

Pedro V. Gómez Sánchez - [email protected] - @pedro_g_s - github.com/pedrovgs

Sergio GutierrezSenior Mobile Developer

Alberto GrageraTechnical Director

Jorge BarrosoGoogle Developer Expert

Davide MendoliaSenior Full Stack Engineer

Page 4: Kata Contacts

Pedro V. Gómez Sánchez - [email protected] - @pedro_g_s - github.com/pedrovgs

Page 5: Kata Contacts

Pedro V. Gómez Sánchez - [email protected] - @pedro_g_s - github.com/pedrovgs

Karumi Dojo● We are here to practice and learn.

● This exercise is meant to be collaborative, not competitive.

● Try to open your mind to new concepts.

Page 6: Kata Contacts

Pedro V. Gómez Sánchez - [email protected] - @pedro_g_s - github.com/pedrovgs

Karumi Dojo● We are here to practice architecture.

● Keep always in mind the S.O.L.I.D principles.

● We are going to practice pair programming.

Page 7: Kata Contacts

Pedro V. Gómez Sánchez - [email protected] - @pedro_g_s - github.com/pedrovgs

Clean Architecture

Page 8: Kata Contacts

Pedro V. Gómez Sánchez - [email protected] - @pedro_g_s - github.com/pedrovgs

Page 9: Kata Contacts

Pedro V. Gómez Sánchez - [email protected] - @pedro_g_s - github.com/pedrovgs

Clean Architecture Principles

● Separation of concerns using layers.

● Independent of Framework or third party libraries.

● Testable.

● Independent of UI or Database.

● The Dependency Rule.

Page 10: Kata Contacts

Pedro V. Gómez Sánchez - [email protected] - @pedro_g_s - github.com/pedrovgs

Clean Architecture Principles

● Entities representing enterprise business rules.

● Use cases of the software.

● Adapters to be decoupled from boundaries.

● Platform/Framework as a delivery mechanism.

● Data mapping.

Page 11: Kata Contacts

Pedro V. Gómez Sánchez - [email protected] - @pedro_g_s - github.com/pedrovgs

Clean Architecture Conclusion

“Conforming to these simple rules is not hard, and will save you a lot of headaches going forward. By separating the software into layers, and conforming to The Dependency Rule, you will create a system that is intrinsically testable, with all the benefits that implies. When any of the external parts of the system become obsolete, like the database, or the web framework, you can replace those obsolete elements with a minimum of fuss.” - Robert C. Martin

Page 12: Kata Contacts

Pedro V. Gómez Sánchez - [email protected] - @pedro_g_s - github.com/pedrovgs

Clean Architecture Karumi Style

Page 13: Kata Contacts

Pedro V. Gómez Sánchez - [email protected] - @pedro_g_s - github.com/pedrovgs

Clean Architecture Karumi Style

● Model View Presenter and Presentation Models.

● Use cases

● Repositories to abstract the data origin.

● Adapters to abstract third party libraries.

● Data mapping.

Page 14: Kata Contacts

Pedro V. Gómez Sánchez - [email protected] - @pedro_g_s - github.com/pedrovgs

Time to practice!!!

Page 15: Kata Contacts

Pedro V. Gómez Sánchez - [email protected] - @pedro_g_s - github.com/pedrovgs

Rules:● Do not start coding until you understand the requirements.

● Do not start coding without thinking in the most important part of the domain.

● Today your notebook is more important than your laptop.

● Think carefully the patterns and responsibilities associated to every class.

Page 16: Kata Contacts

Pedro V. Gómez Sánchez - [email protected] - @pedro_g_s - github.com/pedrovgs

Tips● Baby steps.

● Think before to code.

● Write always testable code.

Page 17: Kata Contacts

Pedro V. Gómez Sánchez - [email protected] - @pedro_g_s - github.com/pedrovgs

Kata Contacts● Command line application to handle your agenda.

● All the data is local but in the future will consume an external API.

● The user can add a contact.

● The user can list all the contacts already added.

Page 18: Kata Contacts

Pedro V. Gómez Sánchez - [email protected] - @pedro_g_s - github.com/pedrovgs

Are you ready?

Page 19: Kata Contacts

Pedro V. Gómez Sánchez - [email protected] - @pedro_g_s - github.com/pedrovgs

Business Requirements

Page 20: Kata Contacts

Pedro V. Gómez Sánchez - [email protected] - @pedro_g_s - github.com/pedrovgs

Entities

Page 21: Kata Contacts

Pedro V. Gómez Sánchez - [email protected] - @pedro_g_s - github.com/pedrovgs

Data Storage

Page 22: Kata Contacts

Pedro V. Gómez Sánchez - [email protected] - @pedro_g_s - github.com/pedrovgs

Use Cases

Page 23: Kata Contacts

Pedro V. Gómez Sánchez - [email protected] - @pedro_g_s - github.com/pedrovgs

User Interface

Page 24: Kata Contacts

Pedro V. Gómez Sánchez - [email protected] - @pedro_g_s - github.com/pedrovgs

Changing Requirements

Page 25: Kata Contacts

Pedro V. Gómez Sánchez - [email protected] - @pedro_g_s - github.com/pedrovgs

Testing