22. O que é código legado?
Muitos dizem: “Todo código, que você não escreveu, é
legado”.
sábado, 9 de julho de 2011
23. O que é código legado?
Muitos dizem: “Todo código, que você não escreveu, é
legado”.
Outros dizem: “Todo código, que você não escreveu e
não possui testes, é legado”.
sábado, 9 de julho de 2011
24. O que é código legado?
Muitos dizem: “Todo código, que você não escreveu, é
legado”.
Outros dizem: “Todo código, que você não escreveu e
não possui testes, é legado”.
Outros pensaram: “Mas até o meu próprio código
que eu escrevo, que “apenas funciona” vira um legado
depois de algumas semanas ...”.
sábado, 9 de julho de 2011
38. Flog
• 1 a 10: Parabéns!
• 11 a 20: Não tão ruim assim ...
• 21 a 40: Talvez precise refatorar
• 41 a 60: Escreva de novo
• 61 a 100: WTF are you trying to do?
sábado, 9 de julho de 2011
39. Flog
• 1 a 10: Parabéns!
• 11 a 20: Não tão ruim assim ...
• 21 a 40: Talvez precise refatorar
• 41 a 60: Escreva de novo
• 61 a 100: WTF are you trying to do?
sábado, 9 de julho de 2011
40. Flog
• 1 a 10: Parabéns!
• 11 a 20: Não tão ruim assim ...
• 21 a 40: Talvez precise refatorar
• 41 a 60: Escreva de novo
• 61 a 100: WTF are you trying to do?
sábado, 9 de julho de 2011
41. Flog
• 1 a 10: Parabéns!
• 11 a 20: Não tão ruim assim ...
• 21 a 40: Talvez precise refatorar
• 41 a 60: Escreva de novo
• 61 a 100: WTF are you trying to do?
sábado, 9 de julho de 2011
42. Flog
• 1 a 10: Parabéns!
• 11 a 20: Não tão ruim assim ...
• 21 a 40: Talvez precise refatorar
• 41 a 60: Escreva de novo
• 61 a 100: o.O - WTF are you trying to do?
sábado, 9 de julho de 2011
48. Roodi
Problemas de design no seu código
sábado, 9 de julho de 2011
49. Repita Comigo
• “Medir e analisar meu código, serve para
conhecer o meu próprio código.” Brian
Liles (TAFT - Test all the F* time)
sábado, 9 de julho de 2011
51. Cucumber
Funcionalidade: Relatorio Completo
Sendo cliente
Quero o Relatório Completo com os dados dos meus clientes
Para uma Analise de crédito de uma ou várias empresas
Cenário: Identificação da Empresa Filial
Dado que estou consultando um CNPJ de uma empresa "filial"
Quando eu aperto "Consultar em uma Página"
Então deverá trazer os dados da "matriz" vindos da receita federal
E deverá trazer os dados da "filial" vindos da receita federal
sábado, 9 de julho de 2011
52. Steak
feature "Articles", %q{
In order to have an awesome blog
As an author
I want to create and manage articles
} do
scenario "Article index" do
Article.create!(:title => 'One')
Article.create!(:title => 'Two')
visit article_index
page.should have_content('One')
page.should have_content('Two')
end
end
sábado, 9 de julho de 2011
53. Benchmark
class Integer
def simple_prime?
(2..Math.sqrt(self).floor).all? {|i| (self % i).nonzero? }
end
end
sábado, 9 de julho de 2011
54. Benchmark
require "benchmark"
Benchmark.benchmark do |bench|
bench.report("Simple Prime") do
(2..10_000).each { |i| i.simple_prime? }
end
bench.report('Stdlib') do
(2..10_000).each { |i| i.prime? }
end
end
sábado, 9 de julho de 2011
55. Benchmark
CPU Time SysCpu User+Sys ElapsedTime
Simple Prime 0.130000 0.000000 0.130000 ( 0.133931)
Stdlib 0.230000 0.000000 0.230000 ( 0.230975)
sábado, 9 de julho de 2011
56. Profiler
require 'profile'
(2..10_000).each { |i| i.simple_prime? }
sábado, 9 de julho de 2011
57. Benchmark e Profiler
class Integer
def fast_prime?
return true if self.equal?(2)
return false if self.even?
3.step(Math.sqrt(self).floor, 2).all? { |i| (self % i).nonzero? }
end
end
CPU Time SysCpu User+Sys ElapsedTime
Simple Prime 0.130000 0.000000 0.130000 ( 0.133931)
Fast Prime 0.070000 0.000000 0.070000 ( 0.079083)
Stdlib 0.230000 0.000000 0.230000 ( 0.230975)
sábado, 9 de julho de 2011
58. Benchmark e Profiler
require 'profile'
(2..10_000).each { |i| i.fast_prime? }
sábado, 9 de julho de 2011
60. Ruby Inline
class Factorial
inline do |builder|
builder.c "
long factorial_c(int max) {
int i=max, result=1;
while (i >= 2) { result *= i--; }
return result;
}"
end
end
sábado, 9 de julho de 2011
61. Extensão Nativa
#ext/extconf.rb
require 'mkmf'
dir_config('hello_world')
create_makefile('hello_world')
sábado, 9 de julho de 2011
62. Extensão Nativa
/* hello_world.c */
#include <ruby.h>
VALUE hello_world(VALUE self){
return rb_str_new2("Hello World!");
}
VALUE class_Hello;
void Init_hello_world(){
class_Hello = rb_define_class("HelloWorld", rb_cObject);
rb_define_method(class_Hello, "hello_world", hello_world, 0);
}
# In Ruby
hello = HelloWorld.new
hello.hello_world # => “Hello World!”
sábado, 9 de julho de 2011
63. Automatizando
InfinityTest (To Infinity and beyond)
sábado, 9 de julho de 2011
64. InfinityTest
$ infinity_test --rspec
sábado, 9 de julho de 2011
65. InfinityTest
$ infinity_test --rspec
sábado, 9 de julho de 2011
66. InfinityTest
$ infinity_test --rspec
sábado, 9 de julho de 2011