Desenvolvimento orientado à introspecção

Preview:

DESCRIPTION

Presentation at Labs Conf 2010

Citation preview

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 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

Connascence

sábado, 6 de novembro de 2010

Connascence of Nameclass Company def name 'SuccesSoft' endend

def increase_profit(company) company.nameend

sábado, 6 de novembro de 2010

Connascence of Nameclass Company def name 'SuccesSoft' endend

def increase_profit(company) company.nameend

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| # ... endend

sábado, 6 de novembro de 2010

COP => CON

class Contact attr_accessor :name, :ageend

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

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 => :rspecend

# 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 endend

$ 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 =PTomás D’Stefano

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

sábado, 6 de novembro de 2010

Recommended