SlideShare uma empresa Scribd logo
Desenvolvimento
Orientado à
Introspecção
Tomás D’Stefano
@tomas_stefano
http://github.com/tomas-stefano
sábado, 6 de novembro de 2010
Expectativas da
Apresentação
sábado, 6 de novembro de 2010
Auto-Disciplina
sábado, 6 de novembro de 2010
Simplicidade
sábado, 6 de novembro de 2010
Introspecção
sábado, 6 de novembro de 2010
Como EU faço melhor?
sábado, 6 de novembro de 2010
Onde EU estou perdendo
o foco?
sábado, 6 de novembro de 2010
Como EU me foco
melhor?
sábado, 6 de novembro de 2010
Onde EU desperdiço o
meu tempo?
sábado, 6 de novembro de 2010
Como EU torno mais
simples?
sábado, 6 de novembro de 2010
Onde EU estou errado?
sábado, 6 de novembro de 2010
Você faz essas
perguntas?
Frequentemente?
sábado, 6 de novembro de 2010
O InfinityTest nasceu
dessas perguntas!
sábado, 6 de novembro de 2010
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
Connascence
sábado, 6 de novembro de 2010
Connascence of Name
class Company
def name
'SuccesSoft'
end
end
def increase_profit(company)
company.name
end
sábado, 6 de novembro de 2010
Connascence of Name
class Company
def name
'SuccesSoft'
end
end
def increase_profit(company)
company.name
end
sábado, 6 de novembro de 2010
Regra de Localidade
sábado, 6 de novembro de 2010
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
COP => CON
class Contact
attr_accessor :name, :age
end
sábado, 6 de novembro de 2010
Regra do Grau
sábado, 6 de novembro de 2010
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
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
Muito Mais!
sábado, 6 de novembro de 2010
To Infinity and Beyond!
sábado, 6 de novembro de 2010
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
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
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
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
Notificação
sábado, 6 de novembro de 2010
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
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
Master Branch
(Bundler)
* Possui um Gemfile? -> Então rode com ‘bundle exec’
sábado, 6 de novembro de 2010
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
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
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
Desenvolvimento
Orientado à Diversão =)
sábado, 6 de novembro de 2010
Desenvolvimento
Orientado à Diversão =)
sábado, 6 de novembro de 2010
Desenvolvimento
Orientado à Diversão =)
sábado, 6 de novembro de 2010
O que vem por aí?
sábado, 6 de novembro de 2010
RubyCasts
sábado, 6 de novembro de 2010
Obrigado =P
Tomás D’Stefano
@tomas_stefano
http://github.com/tomas-stefano
sábado, 6 de novembro de 2010

Mais conteúdo relacionado

Semelhante a Desenvolvimento orientado à introspecção

Testes, deploy e integração continua com Python e Django
Testes, deploy e integração continua com Python e DjangoTestes, deploy e integração continua com Python e Django
Testes, deploy e integração continua com Python e Djangofabiocerqueira
 
TDC 2011 - E no sétimo dia ele escreveu testes
TDC 2011 - E no sétimo dia ele escreveu testesTDC 2011 - E no sétimo dia ele escreveu testes
TDC 2011 - E no sétimo dia ele escreveu testesRafael Dohms
 
Introducao ao sistema de gerenciamento de conteúdo Plone
Introducao ao sistema de gerenciamento de conteúdo PloneIntroducao ao sistema de gerenciamento de conteúdo Plone
Introducao ao sistema de gerenciamento de conteúdo PloneFabiano Weimar
 
Scrum - IMES 2013 (Remodelada)
Scrum - IMES 2013 (Remodelada)Scrum - IMES 2013 (Remodelada)
Scrum - IMES 2013 (Remodelada)Eduardo Bregaida
 
Ao infinito e além com PHP memcached e Gearman
Ao infinito e além com PHP memcached e GearmanAo infinito e além com PHP memcached e Gearman
Ao infinito e além com PHP memcached e GearmanElton Minetto
 
Testes de aceitação com Steak e Capybara
Testes de aceitação com Steak e CapybaraTestes de aceitação com Steak e Capybara
Testes de aceitação com Steak e CapybaraZigotto Tecnologia
 

Semelhante a Desenvolvimento orientado à introspecção (10)

Seu site voando
Seu site voandoSeu site voando
Seu site voando
 
O mundo visto de dentro do Ruby
O mundo visto de dentro do RubyO mundo visto de dentro do Ruby
O mundo visto de dentro do Ruby
 
Testes, deploy e integração continua com Python e Django
Testes, deploy e integração continua com Python e DjangoTestes, deploy e integração continua com Python e Django
Testes, deploy e integração continua com Python e Django
 
TDC 2011 - E no sétimo dia ele escreveu testes
TDC 2011 - E no sétimo dia ele escreveu testesTDC 2011 - E no sétimo dia ele escreveu testes
TDC 2011 - E no sétimo dia ele escreveu testes
 
Introducao ao sistema de gerenciamento de conteúdo Plone
Introducao ao sistema de gerenciamento de conteúdo PloneIntroducao ao sistema de gerenciamento de conteúdo Plone
Introducao ao sistema de gerenciamento de conteúdo Plone
 
Scrum - IMES 2013 (Remodelada)
Scrum - IMES 2013 (Remodelada)Scrum - IMES 2013 (Remodelada)
Scrum - IMES 2013 (Remodelada)
 
Ao infinito e além com PHP memcached e Gearman
Ao infinito e além com PHP memcached e GearmanAo infinito e além com PHP memcached e Gearman
Ao infinito e além com PHP memcached e Gearman
 
Sinatra
SinatraSinatra
Sinatra
 
Intro Open Solaris
Intro Open SolarisIntro Open Solaris
Intro Open Solaris
 
Testes de aceitação com Steak e Capybara
Testes de aceitação com Steak e CapybaraTestes de aceitação com Steak e Capybara
Testes de aceitação com Steak e Capybara
 

Desenvolvimento orientado à introspecção