SlideShare une entreprise Scribd logo
1  sur  46
Télécharger pour lire hors ligne
REFACTORING	COM	
PADRÕES	DE	
PROJETO	
REINALDO	JR	
2016
•  Mestre	em	Engenharia	Elétrica	e	Computação,	
Pós-Graduado	em	Liderança	e	Coaching,	Graduado	
em	Ciências	da	Computação	
•  Leciona	em	cursos	de	pós-graduação,	MBAs	e	
Graduação.	
•  Diretor	de	Projetos	da	empresa	INLOC	SISTEMAS	-	
Goiânia-GO	
•  Professor	e	Coordenador	do	Curso	de	Sistemas	de	
Informação	da	Faculdade	Delta	-	Goiânia-GO	
•  +	15	anos	com	projetos	de	soOware	|	+	10	anos	
com	equipes	de	projetos	de	soOwae	|	+	9	anos	
como	professor	universitário
ROTEIRO	
1. ObjeXvo	Geral	
2. Cenário	Atual	
3. Conceitos	
4. Observer	
5. Decorator	
6. Strategy	
7. Boas	PráXcas
#É	possível	
Construir	
Software	
Autosustentável
?
DEFINIÇÃO	“Autosustentável”	
	
“Que	pode	se	sustentar	sozinho”	
	
“h>ps://pt.wikConary.org/wiki/
autosustentável”
DEFINIÇÃO	“Autosustentável”	
	
“Criar	uma	estrutura	de	códigos,	que	
impacte	 o	 menos	 possível	 em	 cada	
refactoring	realizado”	
	
“Reinaldo	Jr	J”
OBJETIVO	GERAL
• Apoia-los	 a	 implementar	 códigos,	
seguindo	 padrões	 refinados,	 já	
t e s t a d o s	 e	 e x p e r i m e t a d o s .	
GaranCndo	 assim,	 uma	 melhor	
qualidade	de	código	e	diminuindo	o	
impacto	das	constantes	mudanças.	
	
OBJETIVO	GERAL
#O	QUE	TE	
IMPEDE	DE	
FAZER	ISTO?
CENÁRIO	ATUAL
CENÁRIO	ATUAL
CENÁRIO	ATUAL
#E	QUAL	É	O	
RESULTADO?
CENÁRIO	ATUAL
CENÁRIO	ATUAL
#DEFINIÇÕES
REFACTORING	
“Refactoring	is	a	controlled	technique	for	
improving	the	design	of	an	exis:ng	code	
base.	 Its	 essence	 is	 applying	 a	 series	 of	
s m a l l	 b e h a v i o r - p r e s e r v i n g	
transformaCons,	each	of	which	"too	small	
to	 be	 worth	 doing".	 However	 the	
cumula:ve	 effect	 of	 each	 of	 these	
transforma:ons	is	quite	significant”	
“MarCn	Fowler”
PADRÃO	
• Um	 padrão	 é	 uma	 solução	 para	 um	
determinado	 problema	 em	 um	
contexto.	
• Porém	 um	 padrão	 não	 descreve	
qualquer	 solução,	 mas	 uma	 solução	
que	 já	 tenha	 sido	 uFlizada	 com	
sucesso	em	mais	de	um	contexto.
PADRÕES	DE	PROJETO	
“Cada	 padrão	 descreve	 um	 problema	 no	
nosso	ambiente	e	o	núcleo	da	sua	solução,	
de	 tal	 forma	 que	 você	 possa	 uClizar	 esta	
solução	 mais	 de	 um	 milhão	 de	 vezes,	 sem	
nunca	fazê-lo	da	mesma	maneira”	
Cristopher	Alexander
#Quanto	mais	padrões	
eu	uXlizar,	melhor	vai	
ficar	o	meu	código?”
#PADRÕES	DE	
PROJETO
MANTRA	DEV	
BAIXO	
ACOPLAMENTO	E	
ALTA	COESÃO
PADRÕES	DE	PROJETO	
• CreaFonal	
• Abstraem	o	processo	de	instanciação	
dos	objetos	
• Strucutural	
• Se	preocupam	com	a	forma	como	classes	
e	objetos	são	compostos	para	formar	
estruturas	maiores	
• Behavioral	
• Se	preocupam	com	algoritmos	e	a	
atribuição	de	responsabilidades	entre	
objetos.
OBSERVER	
“Define	 uma	 dependência	 um-para-
muitos	entre	objetos	de	modo	que	quando	
um	 objeto	 muda	 o	 estado,	 todos	 seus	
dependentes	são	noCficados	e	atualizados	
automaCcamente.	 Permite	 que	 objetos	
interessados	sejam	avisados	da	mudança	
de	 estado	 ou	 outros	 eventos	 ocorrendo	
num	outro	objeto”	
Erich	Gamma
CASE	–	“BOLSA	DE	VALORES”
OBSERVER
DECORATOR	
“ D i n a m i c a m e n t e ,	 a g r e g a r	
responsabilidades	adicionais	a	objetos.	Os	
Decorators	 fornecem	 uma	 alternaCva	
flexível	 ao	 uso	 de	 subclasses	 para	
extensão	de	funcionalidades.”	
	
Erich	Gamma
CASE	-	FRETE
DECORATOR
STRATEGY	
“Definir	 uma	 família	 de	 algoritmos,	
encapsular	 cada	 uma	 delas	 e	 torná-las	
intercambiáveis.	 Strategy	 permite	 que	 o	
algoritmo	 varie	 independentemente	 dos	
clientes	que	o	uXlizam”		
Erich	Gamma
CASE	–	“FORMAS	DE	PAGAMENTO”
STRATEGY
STRATEGY
BOAS	PRÁTICAS	
1.  Codifique	orientado	a	interfaces	e	não	
a	implementação	
2.  Evite	 a	 herança	 e	 favoreça	 a	
composição	
3.  Obtenha	 baixo	 acoplamento	 e	 alta	
coesão	
4.  UXlize	padrões	de	projeto	
5.  Não	tenha	medo	de	refactoring
DICAS	DE	LIVRO
DICAS	DE	LIVRO
DICAS	DE	LIVRO
www.reinaldojr.com
rsjrnet@gmail.com	
www.reinaldojr.com
Refactor com Padrões de Projeto

Contenu connexe

En vedette (9)

Como poner un video a tu blogger
Como poner un video a tu bloggerComo poner un video a tu blogger
Como poner un video a tu blogger
 
Correlates, stability and predictors of borderline personality disorder among...
Correlates, stability and predictors of borderline personality disorder among...Correlates, stability and predictors of borderline personality disorder among...
Correlates, stability and predictors of borderline personality disorder among...
 
Construire une stratégie de prévention du suicide en milieu autochtone
Construire une stratégie de prévention du suicide en milieu autochtoneConstruire une stratégie de prévention du suicide en milieu autochtone
Construire une stratégie de prévention du suicide en milieu autochtone
 
Prabu m
Prabu mPrabu m
Prabu m
 
2017ResumeLuddie H. Austin
2017ResumeLuddie H. Austin2017ResumeLuddie H. Austin
2017ResumeLuddie H. Austin
 
Kashif
KashifKashif
Kashif
 
Siemens Sitrans F VA 250
Siemens Sitrans F VA 250 Siemens Sitrans F VA 250
Siemens Sitrans F VA 250
 
File abut
File abutFile abut
File abut
 
Suzuki Volume 09 - Flauta
Suzuki Volume 09 - FlautaSuzuki Volume 09 - Flauta
Suzuki Volume 09 - Flauta
 

Similaire à Refactor com Padrões de Projeto

O papel e a carreira do arquiteto de software
O papel e a carreira do arquiteto de softwareO papel e a carreira do arquiteto de software
O papel e a carreira do arquiteto de softwareLeonardo Zanivan
 
Especialização em desenvolvimento web e aplicativos móveis - Univem
Especialização em desenvolvimento web e aplicativos móveis - UnivemEspecialização em desenvolvimento web e aplicativos móveis - Univem
Especialização em desenvolvimento web e aplicativos móveis - UnivemRicardo Sabatine
 
Apresentação do Módulo de GP de Web
Apresentação do Módulo de GP de WebApresentação do Módulo de GP de Web
Apresentação do Módulo de GP de WebClaudio Barbosa
 
Introdução a Modelagem
Introdução a ModelagemIntrodução a Modelagem
Introdução a ModelagemRodrigo Branas
 
V Café & CODE - Provocações do Mestre - Prof. MSc. Cloves Rocha
V Café & CODE - Provocações do Mestre - Prof. MSc. Cloves RochaV Café & CODE - Provocações do Mestre - Prof. MSc. Cloves Rocha
V Café & CODE - Provocações do Mestre - Prof. MSc. Cloves RochaCloves da Rocha
 
Fatores que influenciam na longevidade de um Software
Fatores que influenciam na longevidade de um SoftwareFatores que influenciam na longevidade de um Software
Fatores que influenciam na longevidade de um SoftwarePablo Dall'Oglio
 
Visão Geral do Java para Iniciantes - FLISOL 2011
Visão Geral do Java para Iniciantes - FLISOL 2011Visão Geral do Java para Iniciantes - FLISOL 2011
Visão Geral do Java para Iniciantes - FLISOL 2011Frederico Maia Arantes
 
Engenharia de Software - Unimep/Pronatec - Aula 16
Engenharia de Software - Unimep/Pronatec - Aula 16Engenharia de Software - Unimep/Pronatec - Aula 16
Engenharia de Software - Unimep/Pronatec - Aula 16André Phillip Bertoletti
 
Conic 2009 XP - extreme programming
Conic 2009  XP - extreme programmingConic 2009  XP - extreme programming
Conic 2009 XP - extreme programmingJúnior Gonçalves
 
Aula 1- ENGENHARIA DE SOFTWARE
Aula 1- ENGENHARIA DE SOFTWAREAula 1- ENGENHARIA DE SOFTWARE
Aula 1- ENGENHARIA DE SOFTWAREErnesto Bedrikow
 
Currículo_Português.pdf
Currículo_Português.pdfCurrículo_Português.pdf
Currículo_Português.pdfJooEmerson5
 
Overview do Mercado de Desenvolvimento Web
Overview do Mercado de Desenvolvimento WebOverview do Mercado de Desenvolvimento Web
Overview do Mercado de Desenvolvimento WebHector Nieva
 
Design for change: Fatores que influenciam na longevidade de um Software PHP
Design for change: Fatores que influenciam na longevidade de um Software PHPDesign for change: Fatores que influenciam na longevidade de um Software PHP
Design for change: Fatores que influenciam na longevidade de um Software PHPPablo Dall'Oglio
 
Currículo (Português)
Currículo (Português)Currículo (Português)
Currículo (Português)cristianojava
 
Tecnologia da Informação - Carreira e perspectiva
Tecnologia da Informação - Carreira e perspectiva Tecnologia da Informação - Carreira e perspectiva
Tecnologia da Informação - Carreira e perspectiva Jônatan Gouveia
 
ONIT Soluções em Tecnologia
ONIT Soluções em TecnologiaONIT Soluções em Tecnologia
ONIT Soluções em TecnologiaMarcelo Monteiro
 
Gestão de Programas com o Program Model Canvas
Gestão de Programas com o Program Model CanvasGestão de Programas com o Program Model Canvas
Gestão de Programas com o Program Model CanvasMaria Angelica Castellani
 
MVCSummit - DDD e ASP NET MVC na prática com o LiteFx
MVCSummit - DDD e ASP NET MVC na prática com o LiteFxMVCSummit - DDD e ASP NET MVC na prática com o LiteFx
MVCSummit - DDD e ASP NET MVC na prática com o LiteFxDouglas Aguiar
 

Similaire à Refactor com Padrões de Projeto (20)

O papel e a carreira do arquiteto de software
O papel e a carreira do arquiteto de softwareO papel e a carreira do arquiteto de software
O papel e a carreira do arquiteto de software
 
Especialização em desenvolvimento web e aplicativos móveis - Univem
Especialização em desenvolvimento web e aplicativos móveis - UnivemEspecialização em desenvolvimento web e aplicativos móveis - Univem
Especialização em desenvolvimento web e aplicativos móveis - Univem
 
Apresentação do Módulo de GP de Web
Apresentação do Módulo de GP de WebApresentação do Módulo de GP de Web
Apresentação do Módulo de GP de Web
 
Introdução a Modelagem
Introdução a ModelagemIntrodução a Modelagem
Introdução a Modelagem
 
V Café & CODE - Provocações do Mestre - Prof. MSc. Cloves Rocha
V Café & CODE - Provocações do Mestre - Prof. MSc. Cloves RochaV Café & CODE - Provocações do Mestre - Prof. MSc. Cloves Rocha
V Café & CODE - Provocações do Mestre - Prof. MSc. Cloves Rocha
 
Fatores que influenciam na longevidade de um Software
Fatores que influenciam na longevidade de um SoftwareFatores que influenciam na longevidade de um Software
Fatores que influenciam na longevidade de um Software
 
Visão Geral do Java para Iniciantes - FLISOL 2011
Visão Geral do Java para Iniciantes - FLISOL 2011Visão Geral do Java para Iniciantes - FLISOL 2011
Visão Geral do Java para Iniciantes - FLISOL 2011
 
Facetas do desenvolvedor agil
Facetas do desenvolvedor agilFacetas do desenvolvedor agil
Facetas do desenvolvedor agil
 
Bower
BowerBower
Bower
 
Engenharia de Software - Unimep/Pronatec - Aula 16
Engenharia de Software - Unimep/Pronatec - Aula 16Engenharia de Software - Unimep/Pronatec - Aula 16
Engenharia de Software - Unimep/Pronatec - Aula 16
 
Conic 2009 XP - extreme programming
Conic 2009  XP - extreme programmingConic 2009  XP - extreme programming
Conic 2009 XP - extreme programming
 
Aula 1- ENGENHARIA DE SOFTWARE
Aula 1- ENGENHARIA DE SOFTWAREAula 1- ENGENHARIA DE SOFTWARE
Aula 1- ENGENHARIA DE SOFTWARE
 
Currículo_Português.pdf
Currículo_Português.pdfCurrículo_Português.pdf
Currículo_Português.pdf
 
Overview do Mercado de Desenvolvimento Web
Overview do Mercado de Desenvolvimento WebOverview do Mercado de Desenvolvimento Web
Overview do Mercado de Desenvolvimento Web
 
Design for change: Fatores que influenciam na longevidade de um Software PHP
Design for change: Fatores que influenciam na longevidade de um Software PHPDesign for change: Fatores que influenciam na longevidade de um Software PHP
Design for change: Fatores que influenciam na longevidade de um Software PHP
 
Currículo (Português)
Currículo (Português)Currículo (Português)
Currículo (Português)
 
Tecnologia da Informação - Carreira e perspectiva
Tecnologia da Informação - Carreira e perspectiva Tecnologia da Informação - Carreira e perspectiva
Tecnologia da Informação - Carreira e perspectiva
 
ONIT Soluções em Tecnologia
ONIT Soluções em TecnologiaONIT Soluções em Tecnologia
ONIT Soluções em Tecnologia
 
Gestão de Programas com o Program Model Canvas
Gestão de Programas com o Program Model CanvasGestão de Programas com o Program Model Canvas
Gestão de Programas com o Program Model Canvas
 
MVCSummit - DDD e ASP NET MVC na prática com o LiteFx
MVCSummit - DDD e ASP NET MVC na prática com o LiteFxMVCSummit - DDD e ASP NET MVC na prática com o LiteFx
MVCSummit - DDD e ASP NET MVC na prática com o LiteFx
 

Refactor com Padrões de Projeto