SlideShare uma empresa Scribd logo
1 de 21
Como você está
criando os seus
objetos?
@raphaelmolesim
Saturday, March 9, 13
Construção de Objetos
Saturday, March 9, 13
Qual é o problema?
• Não está clara a intenção do código
• Por que tantos construtores?
• Quais não estão sendo utilizados?
Saturday, March 9, 13
Métodos de Criação
Saturday, March 9, 13
Por que refatorar?
• Deixar claro a intenção do código
• Ganha mais flexibilidade, por que menos
restrições
• Torna mais simples encontrar código de
criação não utilizado
Saturday, March 9, 13
Saturday, March 9, 13
Saturday, March 9, 13
Falando de Factory
• Tema que comumente causa confusão
• Gof
• Abstract Factory
• Factory Method
• Padrão Factory
Saturday, March 9, 13
Factory
• Classe que implementa 1 ou mais métodos
de criação
• Estes métodos podem ser estáticos ou não
• Retorna interface, classe abstrata ou
concreta
• Pode implementar métodos não
relacionado a criação do objeto
Saturday, March 9, 13
Saturday, March 9, 13
Por que refatorar?
• Consolidar lógica de criação de objetos
• Desacoplar um cliente da lógica de criação
Saturday, March 9, 13
Factory Method
• Método não estático
• Retorna uma implementação de uma
interface ou de uma classe base.
• Permite criação polimórfica
• Factory Method não é uma Factory
Saturday, March 9, 13
Saturday, March 9, 13
Saturday, March 9, 13
Saturday, March 9, 13
Por que refatorar?
• Reduz duplicação de código resultando de
um passo de customização
• Comunica efetivamente onde a criação
ocorre
Saturday, March 9, 13
Abstract Factory
Saturday, March 9, 13
Saturday, March 9, 13
Atenção
• Avalie antes de utilizar um pattern
• Refatore somente se valer a pena
• Trabalhe para resolver problemas
• Técnicas não são regras e depende de você
saber como usa-las
Saturday, March 9, 13
Workshop
Desenvolvimento no
Mundo Real
• Técnicas Refatoção
• Padrões de Projeto
• TDD e BDD
• Problemas do Mundo Real
• 25/03 => 28/03 (25% Off)
Saturday, March 9, 13
Saturday, March 9, 13

Mais conteúdo relacionado

Semelhante a Criando objetos de forma otimizada

Modelagem Ágil - UaiJug TechDays 2013 - Uberlândia MG
Modelagem Ágil - UaiJug TechDays 2013 - Uberlândia MGModelagem Ágil - UaiJug TechDays 2013 - Uberlândia MG
Modelagem Ágil - UaiJug TechDays 2013 - Uberlândia MGNeubio Ferreira
 
Programação Pragmática
Programação PragmáticaProgramação Pragmática
Programação Pragmáticaelliando dias
 
TDD com Código Legado - "Atualizado"
TDD com Código Legado - "Atualizado"TDD com Código Legado - "Atualizado"
TDD com Código Legado - "Atualizado"Cesar Romero
 
Clean Code - Fork In Tuba
Clean Code - Fork In TubaClean Code - Fork In Tuba
Clean Code - Fork In TubaRafael Paz
 
Orientação a Objetos com PHP
Orientação a Objetos com PHPOrientação a Objetos com PHP
Orientação a Objetos com PHPAugusto Pascutti
 
Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...
Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...
Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...Thiago Barradas
 
Padrões de Projeto de Software Orientado a Objetos
Padrões de Projeto de Software Orientado a ObjetosPadrões de Projeto de Software Orientado a Objetos
Padrões de Projeto de Software Orientado a ObjetosCloves da Rocha
 
Clean Code: Por um mundo com códigos melhores - SETI 2017
Clean Code: Por um mundo com códigos melhores - SETI 2017Clean Code: Por um mundo com códigos melhores - SETI 2017
Clean Code: Por um mundo com códigos melhores - SETI 2017Thiago Barradas
 
Programador – Como Me Tornar Um!
Programador –  Como  Me Tornar  Um!Programador –  Como  Me Tornar  Um!
Programador – Como Me Tornar Um!Aislan Rafael
 
Tdc2013 - Trilha de Teste -
Tdc2013 - Trilha de Teste - Tdc2013 - Trilha de Teste -
Tdc2013 - Trilha de Teste - Leonardo Galani
 
Confirmation - A parte mais importante das User Stories
Confirmation - A parte mais importante das User StoriesConfirmation - A parte mais importante das User Stories
Confirmation - A parte mais importante das User StoriesEduardo Silva
 
Aprendizados de um Agile Coach - Agile Trends
Aprendizados de um Agile Coach - Agile TrendsAprendizados de um Agile Coach - Agile Trends
Aprendizados de um Agile Coach - Agile TrendsAlexandre Rech
 
Extreme programming
Extreme programmingExtreme programming
Extreme programmingVitor Castro
 
[GUTS-RS] GUTS Talks - Automação de Testes
[GUTS-RS] GUTS Talks - Automação de Testes[GUTS-RS] GUTS Talks - Automação de Testes
[GUTS-RS] GUTS Talks - Automação de TestesGUTS-RS
 
Mocks, Stubs e Fakes - Developers-SP - Julho-2017
Mocks, Stubs e Fakes - Developers-SP - Julho-2017Mocks, Stubs e Fakes - Developers-SP - Julho-2017
Mocks, Stubs e Fakes - Developers-SP - Julho-2017Renato Groff
 

Semelhante a Criando objetos de forma otimizada (20)

Modelagem Ágil - UaiJug TechDays 2013 - Uberlândia MG
Modelagem Ágil - UaiJug TechDays 2013 - Uberlândia MGModelagem Ágil - UaiJug TechDays 2013 - Uberlândia MG
Modelagem Ágil - UaiJug TechDays 2013 - Uberlândia MG
 
Introdução ao TDD
Introdução ao TDDIntrodução ao TDD
Introdução ao TDD
 
Programação Pragmática
Programação PragmáticaProgramação Pragmática
Programação Pragmática
 
Workshop DDD
Workshop DDDWorkshop DDD
Workshop DDD
 
TDD com Código Legado - "Atualizado"
TDD com Código Legado - "Atualizado"TDD com Código Legado - "Atualizado"
TDD com Código Legado - "Atualizado"
 
Teste de usabilidade
Teste de usabilidadeTeste de usabilidade
Teste de usabilidade
 
Teste de usabilidade
Teste de usabilidadeTeste de usabilidade
Teste de usabilidade
 
Clean Code - Fork In Tuba
Clean Code - Fork In TubaClean Code - Fork In Tuba
Clean Code - Fork In Tuba
 
Orientação a Objetos com PHP
Orientação a Objetos com PHPOrientação a Objetos com PHP
Orientação a Objetos com PHP
 
Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...
Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...
Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...
 
Padrões de Projeto de Software Orientado a Objetos
Padrões de Projeto de Software Orientado a ObjetosPadrões de Projeto de Software Orientado a Objetos
Padrões de Projeto de Software Orientado a Objetos
 
Clean Code: Por um mundo com códigos melhores - SETI 2017
Clean Code: Por um mundo com códigos melhores - SETI 2017Clean Code: Por um mundo com códigos melhores - SETI 2017
Clean Code: Por um mundo com códigos melhores - SETI 2017
 
The design sprint v1.0
The design sprint v1.0The design sprint v1.0
The design sprint v1.0
 
Programador – Como Me Tornar Um!
Programador –  Como  Me Tornar  Um!Programador –  Como  Me Tornar  Um!
Programador – Como Me Tornar Um!
 
Tdc2013 - Trilha de Teste -
Tdc2013 - Trilha de Teste - Tdc2013 - Trilha de Teste -
Tdc2013 - Trilha de Teste -
 
Confirmation - A parte mais importante das User Stories
Confirmation - A parte mais importante das User StoriesConfirmation - A parte mais importante das User Stories
Confirmation - A parte mais importante das User Stories
 
Aprendizados de um Agile Coach - Agile Trends
Aprendizados de um Agile Coach - Agile TrendsAprendizados de um Agile Coach - Agile Trends
Aprendizados de um Agile Coach - Agile Trends
 
Extreme programming
Extreme programmingExtreme programming
Extreme programming
 
[GUTS-RS] GUTS Talks - Automação de Testes
[GUTS-RS] GUTS Talks - Automação de Testes[GUTS-RS] GUTS Talks - Automação de Testes
[GUTS-RS] GUTS Talks - Automação de Testes
 
Mocks, Stubs e Fakes - Developers-SP - Julho-2017
Mocks, Stubs e Fakes - Developers-SP - Julho-2017Mocks, Stubs e Fakes - Developers-SP - Julho-2017
Mocks, Stubs e Fakes - Developers-SP - Julho-2017
 

Mais de Lambda 3

Marketing de Produtos Digitais
Marketing de Produtos DigitaisMarketing de Produtos Digitais
Marketing de Produtos DigitaisLambda 3
 
Experiências, Erros e Acertos no Desenvolvimento de Projetos Ágeis
Experiências, Erros e Acertos no Desenvolvimento de Projetos ÁgeisExperiências, Erros e Acertos no Desenvolvimento de Projetos Ágeis
Experiências, Erros e Acertos no Desenvolvimento de Projetos ÁgeisLambda 3
 
Técnicas de Programação Funcional
Técnicas de Programação FuncionalTécnicas de Programação Funcional
Técnicas de Programação FuncionalLambda 3
 
Source Control
Source ControlSource Control
Source ControlLambda 3
 
Jquery - Dicas e Truques
Jquery - Dicas e TruquesJquery - Dicas e Truques
Jquery - Dicas e TruquesLambda 3
 
Keynote Lambda Day
Keynote Lambda DayKeynote Lambda Day
Keynote Lambda DayLambda 3
 
Novidades ALM Summit 2013
Novidades ALM Summit 2013Novidades ALM Summit 2013
Novidades ALM Summit 2013Lambda 3
 
Backbone.js nas trincheiras
Backbone.js nas trincheirasBackbone.js nas trincheiras
Backbone.js nas trincheirasLambda 3
 

Mais de Lambda 3 (8)

Marketing de Produtos Digitais
Marketing de Produtos DigitaisMarketing de Produtos Digitais
Marketing de Produtos Digitais
 
Experiências, Erros e Acertos no Desenvolvimento de Projetos Ágeis
Experiências, Erros e Acertos no Desenvolvimento de Projetos ÁgeisExperiências, Erros e Acertos no Desenvolvimento de Projetos Ágeis
Experiências, Erros e Acertos no Desenvolvimento de Projetos Ágeis
 
Técnicas de Programação Funcional
Técnicas de Programação FuncionalTécnicas de Programação Funcional
Técnicas de Programação Funcional
 
Source Control
Source ControlSource Control
Source Control
 
Jquery - Dicas e Truques
Jquery - Dicas e TruquesJquery - Dicas e Truques
Jquery - Dicas e Truques
 
Keynote Lambda Day
Keynote Lambda DayKeynote Lambda Day
Keynote Lambda Day
 
Novidades ALM Summit 2013
Novidades ALM Summit 2013Novidades ALM Summit 2013
Novidades ALM Summit 2013
 
Backbone.js nas trincheiras
Backbone.js nas trincheirasBackbone.js nas trincheiras
Backbone.js nas trincheiras
 

Criando objetos de forma otimizada