Model of the colossus @ Café com Dev

949 visualizações

Publicada em

Saiba como não deixar seu model virar um ameaçador Colosso.
Vídeo da palestra em https://www.eventials.com/pt-br/helabs/model-of-the-colossus/

Publicada em: Tecnologia
0 comentários
3 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
949
No SlideShare
0
A partir de incorporações
0
Número de incorporações
87
Ações
Compartilhamentos
0
Downloads
3
Comentários
0
Gostaram
3
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Model of the colossus @ Café com Dev

  1. 1. Model of the Colossus
  2. 2. @maurogeorgemaurogeorge.github.comaprenderphp.com.brMauro George
  3. 3. Seu model, um grande colosso
  4. 4. Mas por que istoacontece?
  5. 5. Um pouco de história
  6. 6. Rails 15 minutes blogComeçamos bem
  7. 7. Começamos bemMVC
  8. 8. Começamos bemRails way
  9. 9. Começamos bemMigração de outras linguagens direto para o RailsDesde que mude o mindset
  10. 10. Inicia a confusão paranovatos2 Stacks
  11. 11. Inicia a confusão paranovatos37 Signals stackERB for view templatesMySQL for databasesMiniTest for testingFat Models, Skinny Controllers
  12. 12. Inicia a confusão paranovatosPrime stackHaml for view templatesPostgreSQL for databasesRspec/Cucumber for testingSkinny models, controllers, and a service layer
  13. 13. AR quebra o SRPAlto acoplamento- Callback- Observer- FindersFalta de coesão- Salva- Envia e-mail- Posta no Facebook
  14. 14. Anti-patternModel gerando conteúdo para view
  15. 15. SoluçãoDecorator & Presenter
  16. 16. SoluçãoDecoratorPara quando lidamos com apenas umaentidade
  17. 17. Anti-pattern
  18. 18. Soluçãoapp/decorators/user_decorator.rb
  19. 19. Solução
  20. 20. SoluçãoPresenterPara quando lidamos com N entidades
  21. 21. Anti-patternMétodo de Post ou User?
  22. 22. Soluçãoapp/presenters/writter_post_presenter.rb
  23. 23. Solução
  24. 24. SoluçãoPrefira esta abordagem a helpersHelpers são procedurais
  25. 25. Anti-patternModel Callbacks
  26. 26. Anti-pattern
  27. 27. SoluçãoService
  28. 28. Soluçãoapp/services/post_notify_users_service.rb
  29. 29. Solução
  30. 30. Anti-patternModel Salvando N models
  31. 31. Anti-pattern
  32. 32. SoluçãoForm Object
  33. 33. Soluçãolib/active_model/model.rbJá vem no rails 4Gem active_attrGem virtus
  34. 34. Soluçãoapp/models/user_with_post.rbModel nem sembre herda de AR
  35. 35. Solução
  36. 36. ActiveSupport::ConcernsPrefira as abordagem utilizando POROsActiveSupport::Concerns taca tudo paradebaixo dos panos
  37. 37. Bad SmellsMeu Model está virando um Colosso?
  38. 38. Bad SmellsDiversos métodos com nome de outraentidade
  39. 39. Bad SmellsN métodos recebendo o mesmo paramêtro
  40. 40. N métodos privados que são usados emapenas um métodoBad Smells
  41. 41. Classe gigante(Provavelmente uma God Class)Prefira N classes pequenasBad Smells
  42. 42. Pro FuturoDCI
  43. 43. Crie classesQuebre Model e Classes grandes emclasses menoresClasses que façam apenas uma coisa bemfeitaConclusão
  44. 44. @maurogeorgemaurogeorge.github.comaprenderphp.com.brMauro George
  45. 45. Referênciashttp://rubyweekly.com/archive/124.htmlhttp://rubyweekly.com/archive/126.htmlhttp://robots.thoughtbot.com/post/14825364877/evaluating-alternative-decorator-implementations-inhttp://mikepackdev.com/blog_posts/31-exhibit-vs-presentersamuelmullen.com/2013/05/the-problem-with-rails-callbackshttp://blog.codeclimate.com/blog/2012/10/17/7-ways-to-decompose-fat-activerecord-models/http://rubysource.com/ddd-for-rails-developers-part-1-layered-architecture/http://blog.plataformatec.com.br/2012/03/barebone-models-to-use-with-actionpack-in-rails-4-0/http://www.youtube.com/watch?v=DC-pQPq0acs

×