SlideShare uma empresa Scribd logo
1 de 61
Baixar para ler offline
REFINANDO	CÓDIGO	LEGADO	
COM	DESIGN	PATTERN	E	JAVA	8	
	
JUNHO/2017
QUEM SOU EU ??
•  Mestre	em	Engenharia	Elétrica	e	Computação,	Pós-Graduado	em	
Liderança	e	Coaching	e	Graduado	em	Ciências	da	Computação	
•  Leciono	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	
•  +	16	anos	com	projetos	de	soOware	
•  JUG-Leader	GOJAVA	
•  Entusiasta	na	área	de	Machine	Learning
AGENDA
1.  Cenário	em	que	vivemos	
2.  Código	Autosustentável	
3.  O	que	é	refatoração	
4.  O	que	nos	moZva	retaforar?	
5.  Padrões	de	projeto	
6. “Hands	on”	
1.  BUILDER	
2.  ABSTRACT	FACTORY	
3.  STATE	
7.  JAVA	8	
8.  7	Dicas	Finais
1)	CENÁRIO	EM	QUE	
VIVEMOS
É só criar um botão na tela L
A Demanda > Capacidade L
Tudo é para ONTEM L
2)	CÓDIGO	
AUTOSUSTENTÁVEL
“Que	pode	se	sustentar	sozinho”	
	
Fonte:	hcps://pt.wikZonary.org/wiki/
autosustentável	
CÓDIGO AUTOSUSTENTÁVEL
“Criar	uma	estrutura	de	códigos,	que	
impacte	o	menos	possível	em	cada	
alteração	realizada”	
“Reinaldo	Jr	J”	
CÓDIGO AUTOSUSTENTÁVEL
3)	O	QUE	É	
REFATORAÇÃO?
“Uma	alteração	feita	na	estrutura	interna	do	
soAware	para	torná-lo	mais	fácil	de	ser	
entendido	e	menos	custoso	de	ser	modificado	
sem	alterar	seu	comportamento	
observável”	(MarZn	Fowler).	
REFATORAÇÃO
O	processo	de	refatoração,	envolve	a	
remoção	de	duplicação,	a	simplificação	
de	lógica	condicional	e	a	clarificação	de	
código.		
	
REFATORAÇÃO
“Qualquer	tolo	consegue	escrever	
código	que	um	computador	
entenda.	Bons	programadores	
escrevem	código	que	humanos	
possam	entender”	(MarZn	Fowler)
4)	O	QUE	NOS	MOTIVA	
A	REFATORAR?
1.  Tornar	mais	fácil	a	adição	de	código	novo	
2.  Melhorar	o	projeto	de	código	existente	
3.  Obter	um	melhor	entendimento	do	código	
4.  Tornar	a	programação	menos	irritante	
	
O QUE NOS MOTIVA REFATORAR?
Os	problemas	de	projeto	mais	comuns,	
resultam	de	código	que:	
1.  Duplicado	
2.  Dificuldade	em	encontrar	funcionalidades	
3.  É	complicado	
PROBLEMAS DE CÓDIGO
BAIXA COESÃO
•  Várias	funcionalidades	em	um	mesmo	objeto	
•  Diocil	reaproveitamento	
•  Diocil	manutenção	
•  Alta	complexidade
ALTO ACOPLAMENTO
•  Forte	dependência	entre	componentes	
•  É	dificil	trocar	dependências	de	um	objeto	sem	
quebrar	o	seu	funcionamento	interno	
•  É	dificil	adicionar	mais	funcionalidades	ao	
componente	sem	ter	que	alterar	o	seu	código
ALTA	coesão	e	BAIXO	
acoplamento	
	
	
MANTRA
5)	PADRÕES	DE	
PROJETO
PADRÕES DE PROJETO
“Cada	padrão	escreve	um	problema	que	ocorre	
repeJdamente	em	nosso	ambiente,	e	então	
descreve	o	núcleo	da	solução	para	esse	problema,	
de	uma	forma	que	você	possa	uJlizar	essa	solução	
um	milhão	de	vezes,	sem	nunca	fazê-lo	da	mesma	
forma	duas	vezes.”	(Alexander)
6)	HANDS	ON
h`ps://github.com/Reinaldo-Jr/join-062017
#BUILDER
Separar	o	processo	de	construção	de	
um	objeto	de	sua	representação	e	
permiZr	a	sua	criação	passo-a-passo.	
Diferentes	Zpos	de	objetos	podem	
ser	criados	com	implementações	
disZntas	de	cada	passo.	
DEFINIÇÃO
Simplificar	códigos	que	criam	objetos	
complexos,	com	caracterísZcas	diferentes.	
MOTIVAÇÃO
CENÁRIO
BUILDER
BUILDER
#STATE
Alterar	o	comportamento	de	um	
determinado	objeto	de	acordo	com	o	
estado	no	qual	ele	se	encontra.	
DEFINIÇÃO
Tratar	lógica	condicional	de	mudança	
de	estados	demasiadamente	
complexa.	
MOTIVAÇÃO
CENÁRIO
STATE
STATE
#ABSTRACT
FACTORY
Mover	o	conhecimento	de	criação	de	
diversas	classes,	para	uma	única	
classe.	
DEFINIÇÃO
Facilitação	de	lógica	complexa	para	
criação	de	objetos.	
MOTIVAÇÃO
CENÁRIO
ABSTRACT FACTORY
ABSTRACT FACTORY
7) JAVA 8
#LAMBDA
#STREAM
STREAM
Avanços significa[vos na API de Collec[ons

STREAMS para filtragem e ordenação
COLLECTORS para resgatar a lista
8)	7	DICAS	
IMPORTANTES
Comece	a	dedicar	tempo	para	melhoria	
interna	do	seu	código	ou	“remoção	dos	
débitos	técnicos”.	
	
DICA (1)
ALTA	coesão	e	BAIXO	
acoplamento	
	
	
DICA	(1)	DICA	(1)	
DICA (2)
“Programe	orientado	a	
classe	pai”	
	
	
DICA (3)
“Elimine	as	duplicidades	de	
código”	
	
	
DICA (4)
“UZlize	padrões	de	projeto”	
	
	
DICA (5)
DICA (6)
DICA (7)
DICAS DE LIVRO
DICAS DE LIVRO
rsjrnet@gmail.com

www.reinaldojr.com

hhps://github.com/Reinaldo-Jr

hhps://www.slideshare.net/ReinaldoJr5

APOIADOR

Mais conteúdo relacionado

Semelhante a Refinando Código Legado

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
 
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
 
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
 
Introdução a Modelagem
Introdução a ModelagemIntrodução a Modelagem
Introdução a ModelagemRodrigo Branas
 
SINFO24 GFI Bug's Live Jorge Goncalves
SINFO24 GFI Bug's Live Jorge GoncalvesSINFO24 GFI Bug's Live Jorge Goncalves
SINFO24 GFI Bug's Live Jorge Goncalvesxerere
 
Seminários V - Ads -UNOPAR ARAGUAINA,TO - POLO II
Seminários V - Ads -UNOPAR ARAGUAINA,TO - POLO IISeminários V - Ads -UNOPAR ARAGUAINA,TO - POLO II
Seminários V - Ads -UNOPAR ARAGUAINA,TO - POLO IIDheimyson Carlos Sousa Silva
 
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
 
Como Acelerar Sua Carreira
Como Acelerar Sua CarreiraComo Acelerar Sua Carreira
Como Acelerar Sua CarreiraFelipe Barreiros
 
Upskilling and Reskilling of IT-BPM Professionals in Lifewide Learning. Aper...
Upskilling and Reskilling of IT-BPM Professionals in Lifewide Learning.  Aper...Upskilling and Reskilling of IT-BPM Professionals in Lifewide Learning.  Aper...
Upskilling and Reskilling of IT-BPM Professionals in Lifewide Learning. Aper...Mauricio Bitencourt, CBPP
 
Low Code Data Science with Pentaho Machine Intelligence
Low Code Data Science with Pentaho Machine IntelligenceLow Code Data Science with Pentaho Machine Intelligence
Low Code Data Science with Pentaho Machine IntelligenceAmbiente Livre
 
Ppt sthart final
Ppt sthart finalPpt sthart final
Ppt sthart finalletssthart
 
Carreira de desenvolvedor
Carreira de desenvolvedorCarreira de desenvolvedor
Carreira de desenvolvedorLucas Moura
 
Aula 1- ENGENHARIA DE SOFTWARE
Aula 1- ENGENHARIA DE SOFTWAREAula 1- ENGENHARIA DE SOFTWARE
Aula 1- ENGENHARIA DE SOFTWAREErnesto Bedrikow
 
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
 
Novas tecnologias -profissões do futuro
Novas tecnologias -profissões do futuroNovas tecnologias -profissões do futuro
Novas tecnologias -profissões do futuroNeemias Lopes
 

Semelhante a Refinando Código Legado (20)

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
 
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
 
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
 
Introdução a Modelagem
Introdução a ModelagemIntrodução a Modelagem
Introdução a Modelagem
 
SINFO24 GFI Bug's Live Jorge Goncalves
SINFO24 GFI Bug's Live Jorge GoncalvesSINFO24 GFI Bug's Live Jorge Goncalves
SINFO24 GFI Bug's Live Jorge Goncalves
 
Seminários V - Ads -UNOPAR ARAGUAINA,TO - POLO II
Seminários V - Ads -UNOPAR ARAGUAINA,TO - POLO IISeminários V - Ads -UNOPAR ARAGUAINA,TO - POLO II
Seminários V - Ads -UNOPAR ARAGUAINA,TO - POLO II
 
Uf pa jan13
Uf pa jan13Uf pa jan13
Uf pa jan13
 
Facetas do desenvolvedor agil
Facetas do desenvolvedor agilFacetas do desenvolvedor agil
Facetas do desenvolvedor agil
 
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
 
Imaginando Apps
Imaginando AppsImaginando Apps
Imaginando Apps
 
Como Acelerar Sua Carreira
Como Acelerar Sua CarreiraComo Acelerar Sua Carreira
Como Acelerar Sua Carreira
 
Palestra forum iot
Palestra forum iotPalestra forum iot
Palestra forum iot
 
Upskilling and Reskilling of IT-BPM Professionals in Lifewide Learning. Aper...
Upskilling and Reskilling of IT-BPM Professionals in Lifewide Learning.  Aper...Upskilling and Reskilling of IT-BPM Professionals in Lifewide Learning.  Aper...
Upskilling and Reskilling of IT-BPM Professionals in Lifewide Learning. Aper...
 
Low Code Data Science with Pentaho Machine Intelligence
Low Code Data Science with Pentaho Machine IntelligenceLow Code Data Science with Pentaho Machine Intelligence
Low Code Data Science with Pentaho Machine Intelligence
 
Ppt sthart final
Ppt sthart finalPpt sthart final
Ppt sthart final
 
Carreira de desenvolvedor
Carreira de desenvolvedorCarreira de desenvolvedor
Carreira de desenvolvedor
 
Aula 1- ENGENHARIA DE SOFTWARE
Aula 1- ENGENHARIA DE SOFTWAREAula 1- ENGENHARIA DE SOFTWARE
Aula 1- ENGENHARIA DE SOFTWARE
 
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
 
Novas tecnologias -profissões do futuro
Novas tecnologias -profissões do futuroNovas tecnologias -profissões do futuro
Novas tecnologias -profissões do futuro
 
DevOps e App Insights
DevOps e App InsightsDevOps e App Insights
DevOps e App Insights
 

Último

COI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINAS
COI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINASCOI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINAS
COI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINASMarcio Venturelli
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
Palestras sobre Cibersegurança em Eventos - Paulo Pagliusi
Palestras sobre Cibersegurança em Eventos - Paulo PagliusiPalestras sobre Cibersegurança em Eventos - Paulo Pagliusi
Palestras sobre Cibersegurança em Eventos - Paulo PagliusiPaulo Pagliusi, PhD, CISM
 
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdfFrom_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdfRodolpho Concurde
 
ATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docx
ATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docxATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docx
ATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docx2m Assessoria
 
Apostila e caderno de exercicios de WORD
Apostila e caderno de exercicios de  WORDApostila e caderno de exercicios de  WORD
Apostila e caderno de exercicios de WORDRONDINELLYRAMOS1
 
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...Dirceu Resende
 
Entrevistas, artigos, livros & citações de Paulo Pagliusi
Entrevistas, artigos, livros & citações de Paulo PagliusiEntrevistas, artigos, livros & citações de Paulo Pagliusi
Entrevistas, artigos, livros & citações de Paulo PagliusiPaulo Pagliusi, PhD, CISM
 
ATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docx
ATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docxATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docx
ATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docx2m Assessoria
 
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIAEAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIAMarcio Venturelli
 
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)Alessandro Almeida
 

Último (11)

COI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINAS
COI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINASCOI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINAS
COI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINAS
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Palestras sobre Cibersegurança em Eventos - Paulo Pagliusi
Palestras sobre Cibersegurança em Eventos - Paulo PagliusiPalestras sobre Cibersegurança em Eventos - Paulo Pagliusi
Palestras sobre Cibersegurança em Eventos - Paulo Pagliusi
 
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdfFrom_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
 
ATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docx
ATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docxATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docx
ATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docx
 
Apostila e caderno de exercicios de WORD
Apostila e caderno de exercicios de  WORDApostila e caderno de exercicios de  WORD
Apostila e caderno de exercicios de WORD
 
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
 
Entrevistas, artigos, livros & citações de Paulo Pagliusi
Entrevistas, artigos, livros & citações de Paulo PagliusiEntrevistas, artigos, livros & citações de Paulo Pagliusi
Entrevistas, artigos, livros & citações de Paulo Pagliusi
 
ATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docx
ATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docxATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docx
ATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docx
 
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIAEAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
 
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
 

Refinando Código Legado