Desenvolvimento orientado à introspecção

367 views

Published on

Presentation at Labs Conf 2010

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

  • Be the first to like this

No Downloads
Views
Total views
367
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Desenvolvimento orientado à introspecção

  1. 1. Desenvolvimento Orientado à Introspecção Tomás D’Stefano @tomas_stefano http://github.com/tomas-stefano sábado, 6 de novembro de 2010
  2. 2. Expectativas da Apresentação sábado, 6 de novembro de 2010
  3. 3. Auto-Disciplina sábado, 6 de novembro de 2010
  4. 4. Simplicidade sábado, 6 de novembro de 2010
  5. 5. Introspecção sábado, 6 de novembro de 2010
  6. 6. Como EU faço melhor? sábado, 6 de novembro de 2010
  7. 7. Onde EU estou perdendo o foco? sábado, 6 de novembro de 2010
  8. 8. Como EU me foco melhor? sábado, 6 de novembro de 2010
  9. 9. Onde EU desperdiço o meu tempo? sábado, 6 de novembro de 2010
  10. 10. Como EU torno mais simples? sábado, 6 de novembro de 2010
  11. 11. Onde EU estou errado? sábado, 6 de novembro de 2010
  12. 12. Você faz essas perguntas? Frequentemente? sábado, 6 de novembro de 2010
  13. 13. O InfinityTest nasceu dessas perguntas! sábado, 6 de novembro de 2010
  14. 14. Princípios e Valores Connascence!!! Single Responsability Principle! Open/Closed Principle! Liskov Substitution Principle! Dependency Inversion Principle! Interface Segregation Principle! http://bit.ly/cVIdOo sábado, 6 de novembro de 2010
  15. 15. Connascence sábado, 6 de novembro de 2010
  16. 16. Connascence of Name class Company def name 'SuccesSoft' end end def increase_profit(company) company.name end sábado, 6 de novembro de 2010
  17. 17. Connascence of Name class Company def name 'SuccesSoft' end end def increase_profit(company) company.name end sábado, 6 de novembro de 2010
  18. 18. Regra de Localidade sábado, 6 de novembro de 2010
  19. 19. Connascence of Position [['Tomás', 21], [ 'SuccesSoft', 0.5]] def add(contacts) contacts.each do |name, age| # ... end end sábado, 6 de novembro de 2010
  20. 20. COP => CON class Contact attr_accessor :name, :age end sábado, 6 de novembro de 2010
  21. 21. Regra do Grau sábado, 6 de novembro de 2010
  22. 22. Connascence of Algorithm class Company def profit(profit) total = profit.inject(0) { |a, n| a + n } 100 + total end def profit?(profit) total = profit.inject(0) { |a, n| a + n } total > 0 end end sábado, 6 de novembro de 2010
  23. 23. COA => CON class Company def profit(profit) 100 + total_profit(profit) end def profit?(numbers) total_profit(profit) > 0 end def total_profit(profit) profit.inject(0) { |a, n| a + n } end end sábado, 6 de novembro de 2010
  24. 24. Muito Mais! sábado, 6 de novembro de 2010
  25. 25. To Infinity and Beyond! sábado, 6 de novembro de 2010
  26. 26. RVM Ruby API >> environment = RVM::Environment.new('1.9.2') => #<RVM::Environment environment_name="1.9.2"> >> environment.expanded_name => ‘ruby-1.9.0-p0’ sábado, 6 de novembro de 2010
  27. 27. RVM Ruby API RVM.environments('1.9.2,ree,jruby') do |env| env.ruby 'my_ruby_file.rb' end # Roda nos 3 Rubies sábado, 6 de novembro de 2010
  28. 28. Linha de Comando infinity_test --rspec infinity_test --rubies=ree,1.9.2,jruby --rspec infinity_test --rubies=ree,1.9.2,1.8.7 --test-unit sábado, 6 de novembro de 2010
  29. 29. Setup # ~/.infinity_test infinity_test do notifications :growl do show_images :mode => :mario_bross end before_run { clear :terminal } end sábado, 6 de novembro de 2010
  30. 30. Notificação sábado, 6 de novembro de 2010
  31. 31. Setup Rubies! w00t! # ./.infinity_test infinity_test do use :rubies => %w(1.9.2 ree 1.8.7) end sábado, 6 de novembro de 2010
  32. 32. RSpec? # ./.infinity_test infinity_test do use :test_framework => :rspec end # Funciona para o Rspec 2.0.* ou 1.3.* sábado, 6 de novembro de 2010
  33. 33. Master Branch (Bundler) * Possui um Gemfile? -> Então rode com ‘bundle exec’ sábado, 6 de novembro de 2010
  34. 34. Local Commit (Heuristicas) infinity_test do heuristics do add(‘my_file.rb’) do run :all => :tests end end end $ infinity_test --heuristics sábado, 6 de novembro de 2010
  35. 35. Master Branch (Rails) infinity_test --rspec --rails infinity_test --test-unit --rails infinity_test --bacon --rails infinity_test --rubies=ree,1.9.2 --rspec --rails sábado, 6 de novembro de 2010
  36. 36. Futuro •Suportar o Rubinius •Cucumber •Cores no Test::Unit, Bacon e RSpec(bug) (Alguém me ajuda nisso?) sábado, 6 de novembro de 2010
  37. 37. Desenvolvimento Orientado à Diversão =) sábado, 6 de novembro de 2010
  38. 38. Desenvolvimento Orientado à Diversão =) sábado, 6 de novembro de 2010
  39. 39. Desenvolvimento Orientado à Diversão =) sábado, 6 de novembro de 2010
  40. 40. O que vem por aí? sábado, 6 de novembro de 2010
  41. 41. RubyCasts sábado, 6 de novembro de 2010
  42. 42. Obrigado =P Tomás D’Stefano @tomas_stefano http://github.com/tomas-stefano sábado, 6 de novembro de 2010

×