Upgrade to Pro — share decks privately, control downloads, hide ads and more …

De Fat controllers a Use cases

De Fat controllers a Use cases

Google slides: https://docs.google.com/presentation/d/1bRYoDVn7S9JawcK7ycQhv6LggTLnb-tQMRWhtXMXpWc/edit?usp=sharing

Já se deparou com essas perguntas:
1. Como refletir regras de negócios em uma aplicação Rails?
2. Como garantir que um padrão de dev seja facilmente absorvido e mantido pelo time?

Todo time de dev, empresa de tecnologia precisa equilibrar a relação entre qualidade e velocidade em prol das entregas.
E infelizmente, é muito comum muitos sacrificarem qualidade porque o time investiu tempo estruturando o projeto mas perdeu o prazo da entrega, e por conta disso passou a fazer do jeito que dá e então começou a perder o prazo novamente por conta do codebase virar uma zona.

Dado o contexto acima, gostaria de compartilhar com vocês a importância de se entender os casos de uso da sua empresa/produto e como implementá-los de maneira prática e padronizada.
E porque service objects podem se tornar um problema em suas aplicações da sua natureza generalista (é muito comum ouvir: se não vai na model, controller... adiciona em um service object!).

Tópicos que serão abordados:
- Fat controllers & Fat models
- Service Objects
- Domain objects
- Use cases
- Abstrações existente na comunidade:
- Interactor
- Micro::Case (https://github.com/serradura/u-case)
- Como estruturar aplicações Rails fazendo uso desses conceitos.

Avatar for Rodrigo Serradura

Rodrigo Serradura

December 07, 2019
Tweet

More Decks by Rodrigo Serradura

Other Decks in Programming

Transcript

  1. Fat controllers Fat models + Skinny controllers Service Objects Interactors

    2010 2012 - 2014 2011 2009 Domain Objects Use cases
  2. Fat controllers Fat models + Skinny controllers Service Objects Interactors

    2010 2012 - 2014 2011 2009 Domain Objects Use cases
  3. Fat controllers Fat models + Skinny controllers Service Objects Interactors

    2010 2012 - 2014 2011 2009 Domain Objects Use cases
  4. Fat controllers Fat models + Skinny controllers Service Objects Interactors

    2010 2012 - 2014 2011 2009 Domain Objects Use cases Request model é o input que acionará um caso de uso e que gerará um response model (o resultado) que determinará o output para o usuário.
  5. Fat controllers Fat models + Skinny controllers Service Objects Interactors

    2010 2012 - 2014 2011 2009 Domain Objects Use cases Request model é o input que acionará um caso de uso e que gerará um response model (o resultado) que determinará o output para o usuário.
  6. Fat controllers Fat models + Skinny controllers Service Objects Interactors

    2010 2012 - 2014 2011 2009 Domain Objects Use cases Request model é o input que acionará um caso de uso e que gerará um response model (o resultado) que determinará o output para o usuário.
  7. Fat controllers Fat models + Skinny controllers Service Objects Interactors

    2010 2012 - 2014 2011 2009 Domain Objects Use cases Request model é o input que acionará um caso de uso e que gerará um response model (o resultado) que determinará o output para o usuário.
  8. Fat controllers Fat models + Skinny controllers Service Objects Interactors

    2010 2012 - 2014 2011 2009 Domain Objects Use cases Request model é o input que acionará um caso de uso e que gerará um response model (o resultado) que determinará o output para o usuário.
  9. Fat controllers Fat models + Skinny controllers Service Objects Interactors

    2010 2012 - 2014 2011 2009 Domain Objects Use cases Request model é o input que acionará um caso de uso e que gerará um response model (o resultado) que determinará o output para o usuário.
  10. Fat controllers Fat models + Skinny controllers Service Objects Interactors

    2010 2012 - 2014 2011 2009 Domain Objects Use cases Request model é o input que acionará um caso de uso ....
  11. Concerns (Fat model, skinny controller) Controller Model View Request Response

    https://github.com/serradura/from-fat-controllers-to-use-cases/commit/55769be6dae4f2e4d312a8973622ad86babc54e3
  12. Concerns (Fat model, skinny controller) Controller Model View Request Response

    https://github.com/serradura/from-fat-controllers-to-use-cases/commit/55769be6dae4f2e4d312a8973622ad86babc54e3
  13. Service Objects com herança (excesso) Controller View Request Response https://github.com/serradura/from-fat-controllers-to-use-cases/commit/97e8105fa464474b5dd590e067dc7ba388f3c5f8

    https://github.com/serradura/from-fat-controllers-to-use-cases/commit/17a90c28ea14e0131e6477c016c500701492a247 Model Service Objects
  14. Interactors Controller View Request Response Model Interactors & Organizers (Service

    Objects) .call result Contrato (padrão) https://github.com/serradura/from-fat-controllers-to-use-cases/commit/4cc47150115e8230da0daf76e96ef5ade7e02d0f
  15. Use Cases Controller View Request Response Model Use case Domain

    Objects https://github.com/serradura/from-fat-controllers-to-use-cases/commit/07cb885c6f2fb43504a1f200a2fe76771882fb2f https://github.com/serradura/from-fat-controllers-to-use-cases/commit/e6827057e46436bc394a96613017e7a01204e3a6
  16. Use Cases Controller View Request Response Model Use case Domain

    Objects https://github.com/serradura/from-fat-controllers-to-use-cases/commit/07cb885c6f2fb43504a1f200a2fe76771882fb2f https://github.com/serradura/from-fat-controllers-to-use-cases/commit/e6827057e46436bc394a96613017e7a01204e3a6
  17. Fat controllers Fat models + Skinny controllers Service Objects Interactors

    Domain Objects Use cases Melhor ou pior é relativo, mas a ideia é reduzir a métrica acima! https://www.osnews.com/story/19266/wtfsm/