Model of the Colossus
@maurogeorgemaurogeorge.github.comaprenderphp.com.brMauro George
Seu model, um grande colosso
Mas por que istoacontece?
Um pouco de história
Rails 15 minutes blogComeçamos bem
Começamos bemMVC
Começamos bemRails way
Começamos bemMigração de outras linguagens direto para o RailsDesde que mude o mindset
Inicia a confusão paranovatos2 Stacks
Inicia a confusão paranovatos37 Signals stackERB for view templatesMySQL for databasesMiniTest for testingFat Models, Skin...
Inicia a confusão paranovatosPrime stackHaml for view templatesPostgreSQL for databasesRspec/Cucumber for testingSkinny mo...
AR quebra o SRPAlto acoplamento- Callback- Observer- FindersFalta de coesão- Salva- Envia e-mail- Posta no Facebook
Anti-patternModel gerando conteúdo para view
SoluçãoDecorator & Presenter
SoluçãoDecoratorPara quando lidamos com apenas umaentidade
Anti-pattern
Soluçãoapp/decorators/user_decorator.rb
Solução
SoluçãoPresenterPara quando lidamos com N entidades
Anti-patternMétodo de Post ou User?
Soluçãoapp/presenters/writter_post_presenter.rb
Solução
SoluçãoPrefira esta abordagem a helpersHelpers são procedurais
Anti-patternModel Callbacks
Anti-pattern
SoluçãoService
Soluçãoapp/services/post_notify_users_service.rb
Solução
Anti-patternModel Salvando N models
Anti-pattern
SoluçãoForm Object
Soluçãolib/active_model/model.rbJá vem no rails 4Gem active_attrGem virtus
Soluçãoapp/models/user_with_post.rbModel nem sembre herda de AR
Solução
ActiveSupport::ConcernsPrefira as abordagem utilizando POROsActiveSupport::Concerns taca tudo paradebaixo dos panos
Bad SmellsMeu Model está virando um Colosso?
Bad SmellsDiversos métodos com nome de outraentidade
Bad SmellsN métodos recebendo o mesmo paramêtro
N métodos privados que são usados emapenas um métodoBad Smells
Classe gigante(Provavelmente uma God Class)Prefira N classes pequenasBad Smells
Pro FuturoDCI
Crie classesQuebre Model e Classes grandes emclasses menoresClasses que façam apenas uma coisa bemfeitaConclusão
@maurogeorgemaurogeorge.github.comaprenderphp.com.brMauro George
Referênciashttp://rubyweekly.com/archive/124.htmlhttp://rubyweekly.com/archive/126.htmlhttp://robots.thoughtbot.com/post/1...
Model of the colossus @ Café com Dev
Model of the colossus @ Café com Dev
Upcoming SlideShare
Loading in...5
×

Model of the colossus @ Café com Dev

609

Published on

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/

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
609
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
3
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Transcript of "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
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×