desenvolvimento orientado à introspecção

42
Desenvolvimento Orientado à Introspecção Tomás D’Stefano @tomas_stefano http://github.com/tomas-stefano sábado, 6 de novembro de 2010

Upload: successoft-ltda

Post on 05-Jul-2015

253 views

Category:

Technology


2 download

DESCRIPTION

Presentation at Labs Conf 2010

TRANSCRIPT

Page 1: Desenvolvimento orientado à introspecção

Desenvolvimento Orientado à Introspecção

Tomás D’Stefano@tomas_stefano

http://github.com/tomas-stefano

sábado, 6 de novembro de 2010

Page 2: Desenvolvimento orientado à introspecção

Expectativas da Apresentação

sábado, 6 de novembro de 2010

Page 3: Desenvolvimento orientado à introspecção

Auto-Disciplina

sábado, 6 de novembro de 2010

Page 4: Desenvolvimento orientado à introspecção

Simplicidade

sábado, 6 de novembro de 2010

Page 5: Desenvolvimento orientado à introspecção

Introspecção

sábado, 6 de novembro de 2010

Page 6: Desenvolvimento orientado à introspecção

Como EU faço melhor?

sábado, 6 de novembro de 2010

Page 7: Desenvolvimento orientado à introspecção

Onde EU estou perdendo o foco?

sábado, 6 de novembro de 2010

Page 8: Desenvolvimento orientado à introspecção

Como EU me foco melhor?

sábado, 6 de novembro de 2010

Page 9: Desenvolvimento orientado à introspecção

Onde EU desperdiço o meu tempo?

sábado, 6 de novembro de 2010

Page 10: Desenvolvimento orientado à introspecção

Como EU torno mais simples?

sábado, 6 de novembro de 2010

Page 11: Desenvolvimento orientado à introspecção

Onde EU estou errado?

sábado, 6 de novembro de 2010

Page 12: Desenvolvimento orientado à introspecção

Você faz essas perguntas?

Frequentemente?

sábado, 6 de novembro de 2010

Page 13: Desenvolvimento orientado à introspecção

O InfinityTest nasceu dessas perguntas!

sábado, 6 de novembro de 2010

Page 14: Desenvolvimento orientado à introspecção

Princípios e ValoresConnascence!!!

Single Responsability Principle!

Open/Closed Principle!

Liskov Substitution Principle!

Dependency Inversion Principle!

Interface Segregation Principle!

http://bit.ly/cVIdOosábado, 6 de novembro de 2010

Page 15: Desenvolvimento orientado à introspecção

Connascence

sábado, 6 de novembro de 2010

Page 16: Desenvolvimento orientado à introspecção

Connascence of Nameclass Company def name 'SuccesSoft' endend

def increase_profit(company) company.nameend

sábado, 6 de novembro de 2010

Page 17: Desenvolvimento orientado à introspecção

Connascence of Nameclass Company def name 'SuccesSoft' endend

def increase_profit(company) company.nameend

sábado, 6 de novembro de 2010

Page 18: Desenvolvimento orientado à introspecção

Regra de Localidade

sábado, 6 de novembro de 2010

Page 19: Desenvolvimento orientado à introspecção

Connascence of Position

[['Tomás', 21], [ 'SuccesSoft', 0.5]]

def add(contacts) contacts.each do |name, age| # ... endend

sábado, 6 de novembro de 2010

Page 20: Desenvolvimento orientado à introspecção

COP => CON

class Contact attr_accessor :name, :ageend

sábado, 6 de novembro de 2010

Page 21: Desenvolvimento orientado à introspecção

Regra do Grau

sábado, 6 de novembro de 2010

Page 22: Desenvolvimento orientado à introspecção

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

Page 23: Desenvolvimento orientado à introspecção

COA => CONclass 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

Page 24: Desenvolvimento orientado à introspecção

Muito Mais!

sábado, 6 de novembro de 2010

Page 25: Desenvolvimento orientado à introspecção

To Infinity and Beyond!

sábado, 6 de novembro de 2010

Page 26: Desenvolvimento orientado à introspecção

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

Page 27: Desenvolvimento orientado à introspecção

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

Page 28: Desenvolvimento orientado à introspecção

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

Page 29: Desenvolvimento orientado à introspecção

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

Page 30: Desenvolvimento orientado à introspecção

Notificação

sábado, 6 de novembro de 2010

Page 31: Desenvolvimento orientado à introspecção

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

Page 32: Desenvolvimento orientado à introspecção

RSpec?# ./.infinity_test

infinity_test do use :test_framework => :rspecend

# Funciona para o Rspec 2.0.* ou 1.3.*

sábado, 6 de novembro de 2010

Page 33: Desenvolvimento orientado à introspecção

Master Branch (Bundler)

* Possui um Gemfile? -> Então rode com ‘bundle exec’

sábado, 6 de novembro de 2010

Page 34: Desenvolvimento orientado à introspecção

Local Commit(Heuristicas)

infinity_test do heuristics do add(‘my_file.rb’) do run :all => :tests end endend

$ infinity_test --heuristics

sábado, 6 de novembro de 2010

Page 35: Desenvolvimento orientado à introspecção

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

Page 36: Desenvolvimento orientado à introspecção

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

Page 37: Desenvolvimento orientado à introspecção

Desenvolvimento Orientado à Diversão =)

sábado, 6 de novembro de 2010

Page 38: Desenvolvimento orientado à introspecção

Desenvolvimento Orientado à Diversão =)

sábado, 6 de novembro de 2010

Page 39: Desenvolvimento orientado à introspecção

Desenvolvimento Orientado à Diversão =)

sábado, 6 de novembro de 2010

Page 40: Desenvolvimento orientado à introspecção

O que vem por aí?

sábado, 6 de novembro de 2010

Page 41: Desenvolvimento orientado à introspecção

RubyCasts

sábado, 6 de novembro de 2010

Page 42: Desenvolvimento orientado à introspecção

Obrigado =PTomás D’Stefano

@tomas_stefanohttp://github.com/tomas-stefano

sábado, 6 de novembro de 2010