SlideShare uma empresa Scribd logo
1 de 43
Baixar para ler offline
Design Patterns em Ruby
@yuizinha
Manter código é
algo custoso
Uma das tarefas mais custosas e
complicadas no desenvolvimento é manter
o código
Escrever bom
código é díficil
Na real, não é tão difícil, mas sempre
temos uma desculpa para não pensarmos
muito nisso
"Qualquer tolo consegue escrever
código que um computador entenda.
Bons programadores escrevem código
que humanos possam entender"
~ Martin Fowler
Anna "Yui" Cruz
"Cada padrão descreve um
problema no nosso ambiente e
o cerne da sua solução de tal
forma que você possa usar
essa solução mais de um
milhão de vezes, sem nunca
fazê-lo da mesma maneira"
~ Christopher Alexander
Gang of Four
Erich Gamma
Richard Helm
Ralph Johnson
John Vlissides
23 padrões
Criação
Estruturais
Comportamentais
No entanto...
Ralph Johnson - 12 Core Patterns
Peter Norvig - 16 Padrões mais
simples em linguagens dinâmicas
Vamos falar de 3 deles
Observer
Uma classe (observador) quer
ser avisada quando algo muda
em outra classe (observado)
Observador Observado
Observador Observado
Observador Observado
Observador Observado
Observador Observado
Observador Observado
Existem outras maneiras de
implementar observer...
Inclusive aproveitando-se de
blocos e outras estruturas do
ruby
Observer
Exemplos de uso em gems
conhecidas:
- ActiveRecord::Observer
- REXML
Observer
O comportamento de um
algoritmo precisa ser escolhido
no momento de execução
Strategy
Exemplos de uso em gems
conhecidas:
- rdoc
Strategy
Um jeito de percorrer os
elementos de um objeto sem
precisar expor o tipo desses
elementos
Iterator
Iterador Externo
Iterador Externo
Iterador Interno
Iterador Interno
Iterador Interno
Iterador Interno
Essa é a implementação do
each que usamos sempre!!!
Design Patterns
Não é como fazer o código
Design Patterns
Não resolve todos os problemas
Design Patterns
Se usar demais causa mais confusão
Design Patterns
Auxílio para solução de problemas já
conhecidos
Links
http://amzn.to/2cWNAr1
http://amzn.to/2dgfaS9
http://amzn.to/2cyTYE4
Ruby conf 2016   - design patterns em ruby

Mais conteúdo relacionado

Semelhante a Ruby conf 2016 - design patterns em ruby

Matar dinossauros, reconstruir o mundo e virar o imperador do dart side
Matar dinossauros, reconstruir o mundo  e virar o imperador do dart sideMatar dinossauros, reconstruir o mundo  e virar o imperador do dart side
Matar dinossauros, reconstruir o mundo e virar o imperador do dart sideLeonardo Marinho
 
P01 - Como ser um desenvolvedor melhor
P01 - Como ser um desenvolvedor melhorP01 - Como ser um desenvolvedor melhor
P01 - Como ser um desenvolvedor melhorLeandro Ferreira
 
Paradigmas de Linguagens de Programação - Classificações
Paradigmas de Linguagens de Programação - ClassificaçõesParadigmas de Linguagens de Programação - Classificações
Paradigmas de Linguagens de Programação - ClassificaçõesAdriano Teixeira de Souza
 
Design patterns - Gang of Four - Observer e Prototype
Design patterns - Gang of Four - Observer e PrototypeDesign patterns - Gang of Four - Observer e Prototype
Design patterns - Gang of Four - Observer e PrototypeDanielChristofolli
 
O ciclo da vida
O ciclo da vidaO ciclo da vida
O ciclo da vidaLuiz Borba
 
Fundamentos em C# com Clean Code
Fundamentos em C# com Clean CodeFundamentos em C# com Clean Code
Fundamentos em C# com Clean CodeJuliano Sales
 
GNU/Linux - uma alternativa (nova versão)
GNU/Linux - uma alternativa (nova versão)GNU/Linux - uma alternativa (nova versão)
GNU/Linux - uma alternativa (nova versão)Fábio Emilio Costa
 
SCTI 2014 - Dicas para tomadas de decisão seguras em front-end
SCTI 2014 - Dicas para tomadas de decisão seguras em front-endSCTI 2014 - Dicas para tomadas de decisão seguras em front-end
SCTI 2014 - Dicas para tomadas de decisão seguras em front-endRamon Bispo
 
Curso Básico/Intermediário Linux - Colmeia 2008
Curso Básico/Intermediário Linux -  Colmeia 2008Curso Básico/Intermediário Linux -  Colmeia 2008
Curso Básico/Intermediário Linux - Colmeia 2008Marco Carvalho de Oliveira
 
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreams
#DNAD15  - Diminuindo sofrimento com código legado de linguagens não mainstreams#DNAD15  - Diminuindo sofrimento com código legado de linguagens não mainstreams
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreamsJacqueline Abreu
 
Esqueça a linguagem e vire um programador de verdade
Esqueça a linguagem e vire um programador de verdadeEsqueça a linguagem e vire um programador de verdade
Esqueça a linguagem e vire um programador de verdadePedro Chaves
 
Introdução a linguagem java
Introdução a linguagem javaIntrodução a linguagem java
Introdução a linguagem javaRosicleia Frasson
 
Boas praticas em_desenvolvimento_de_software
Boas praticas em_desenvolvimento_de_softwareBoas praticas em_desenvolvimento_de_software
Boas praticas em_desenvolvimento_de_softwareivanassisleal
 
Seminário - Guido van Rossum: Breve história da linguagem Python
Seminário - Guido van Rossum: Breve história da linguagem PythonSeminário - Guido van Rossum: Breve história da linguagem Python
Seminário - Guido van Rossum: Breve história da linguagem PythonGiancarlo Silva
 
Euquipe, evoluindo como dev
Euquipe, evoluindo como devEuquipe, evoluindo como dev
Euquipe, evoluindo como devAlan Zanatta
 
Seja Um Programador Pragmatico
Seja Um Programador PragmaticoSeja Um Programador Pragmatico
Seja Um Programador PragmaticoLeonardo Fernandes
 

Semelhante a Ruby conf 2016 - design patterns em ruby (20)

Matar dinossauros, reconstruir o mundo e virar o imperador do dart side
Matar dinossauros, reconstruir o mundo  e virar o imperador do dart sideMatar dinossauros, reconstruir o mundo  e virar o imperador do dart side
Matar dinossauros, reconstruir o mundo e virar o imperador do dart side
 
P01 - Como ser um desenvolvedor melhor
P01 - Como ser um desenvolvedor melhorP01 - Como ser um desenvolvedor melhor
P01 - Como ser um desenvolvedor melhor
 
Modulo+4
Modulo+4Modulo+4
Modulo+4
 
Modulo+4
Modulo+4Modulo+4
Modulo+4
 
Paradigmas de Linguagens de Programação - Classificações
Paradigmas de Linguagens de Programação - ClassificaçõesParadigmas de Linguagens de Programação - Classificações
Paradigmas de Linguagens de Programação - Classificações
 
Design patterns - Gang of Four - Observer e Prototype
Design patterns - Gang of Four - Observer e PrototypeDesign patterns - Gang of Four - Observer e Prototype
Design patterns - Gang of Four - Observer e Prototype
 
O ciclo da vida
O ciclo da vidaO ciclo da vida
O ciclo da vida
 
Fundamentos em C# com Clean Code
Fundamentos em C# com Clean CodeFundamentos em C# com Clean Code
Fundamentos em C# com Clean Code
 
GNU/Linux - uma alternativa (nova versão)
GNU/Linux - uma alternativa (nova versão)GNU/Linux - uma alternativa (nova versão)
GNU/Linux - uma alternativa (nova versão)
 
SCTI 2014 - Dicas para tomadas de decisão seguras em front-end
SCTI 2014 - Dicas para tomadas de decisão seguras em front-endSCTI 2014 - Dicas para tomadas de decisão seguras em front-end
SCTI 2014 - Dicas para tomadas de decisão seguras em front-end
 
Curso Básico/Intermediário Linux - Colmeia 2008
Curso Básico/Intermediário Linux -  Colmeia 2008Curso Básico/Intermediário Linux -  Colmeia 2008
Curso Básico/Intermediário Linux - Colmeia 2008
 
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreams
#DNAD15  - Diminuindo sofrimento com código legado de linguagens não mainstreams#DNAD15  - Diminuindo sofrimento com código legado de linguagens não mainstreams
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreams
 
Esqueça a linguagem e vire um programador de verdade
Esqueça a linguagem e vire um programador de verdadeEsqueça a linguagem e vire um programador de verdade
Esqueça a linguagem e vire um programador de verdade
 
Clean Coder
Clean CoderClean Coder
Clean Coder
 
Introdução a linguagem java
Introdução a linguagem javaIntrodução a linguagem java
Introdução a linguagem java
 
Boas praticas em_desenvolvimento_de_software
Boas praticas em_desenvolvimento_de_softwareBoas praticas em_desenvolvimento_de_software
Boas praticas em_desenvolvimento_de_software
 
Seminário - Guido van Rossum: Breve história da linguagem Python
Seminário - Guido van Rossum: Breve história da linguagem PythonSeminário - Guido van Rossum: Breve história da linguagem Python
Seminário - Guido van Rossum: Breve história da linguagem Python
 
Euquipe, evoluindo como dev
Euquipe, evoluindo como devEuquipe, evoluindo como dev
Euquipe, evoluindo como dev
 
Seja Um Programador Pragmatico
Seja Um Programador PragmaticoSeja Um Programador Pragmatico
Seja Um Programador Pragmatico
 
O que é ser um bom programador?
O que é ser um bom programador?O que é ser um bom programador?
O que é ser um bom programador?
 

Ruby conf 2016 - design patterns em ruby