refactoring com padrões de projeto

46
REFACTORING COM PADRÕES DE PROJETO REINALDO JR 2016

Upload: reinaldo-jr

Post on 07-Feb-2017

98 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Refactoring com Padrões de Projeto

REFACTORINGCOMPADRÕESDEPROJETO

REINALDOJR2016

Page 2: Refactoring com Padrões de Projeto

•  MestreemEngenhariaElétricaeComputação,Pós-GraduadoemLiderançaeCoaching,GraduadoemCiênciasdaComputação

•  Lecionaemcursosdepós-graduação,MBAseGraduação.

•  DiretordeProjetosdaempresaINLOCSISTEMAS-Goiânia-GO

•  ProfessoreCoordenadordoCursodeSistemasdeInformaçãodaFaculdadeDelta-Goiânia-GO

•  +15anoscomprojetosdesoOware|+10anoscomequipesdeprojetosdesoOwae|+9anoscomoprofessoruniversitário

Page 3: Refactoring com Padrões de Projeto

ROTEIRO1. ObjeXvoGeral2. CenárioAtual3. Conceitos4. Observer5. Decorator6. Strategy7. BoasPráXcas

Page 4: Refactoring com Padrões de Projeto

#ÉpossívelConstruirSoftware

Autosustentável?

Page 5: Refactoring com Padrões de Projeto

DEFINIÇÃO“Autosustentável”“Quepodesesustentarsozinho”

“h>ps://pt.wikConary.org/wiki/autosustentável”

Page 6: Refactoring com Padrões de Projeto

DEFINIÇÃO“Autosustentável”“Criar uma estrutura de códigos, queimpacte o menos possível em cadarefactoringrealizado”

“ReinaldoJrJ”

Page 7: Refactoring com Padrões de Projeto

OBJETIVOGERAL

Page 8: Refactoring com Padrões de Projeto

• 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 im e t a d o s .GaranCndo assim, uma melhorqualidadedecódigoediminuindooimpactodasconstantesmudanças.

OBJETIVOGERAL

Page 9: Refactoring com Padrões de Projeto

#OQUETEIMPEDEDEFAZERISTO?

Page 10: Refactoring com Padrões de Projeto

CENÁRIOATUAL

Page 11: Refactoring com Padrões de Projeto

CENÁRIOATUAL

Page 12: Refactoring com Padrões de Projeto

CENÁRIOATUAL

Page 13: Refactoring com Padrões de Projeto

#EQUALÉORESULTADO?

Page 14: Refactoring com Padrões de Projeto

CENÁRIOATUAL

Page 15: Refactoring com Padrões de Projeto

CENÁRIOATUAL

Page 16: Refactoring com Padrões de Projeto
Page 17: Refactoring com Padrões de Projeto
Page 18: Refactoring com Padrões de Projeto

#DEFINIÇÕES

Page 19: Refactoring com Padrões de Projeto

REFACTORING“Refactoring is a controlled technique forimprovingthedesignofanexis:ngcodebase. Its essence is applying a series ofs m a l l b e h a v i o r - p r e s e r v i n gtransformaCons,eachofwhich"toosmallto be worth doing". However thecumula:ve effect of each of thesetransforma:onsisquitesignificant”

“MarCnFowler”

Page 20: Refactoring com Padrões de Projeto

PADRÃO• Um padrão é uma solução para umdeterminado problema em umcontexto.• Porém um padrão não descrevequalquer solução, mas uma soluçãoque já tenha sido uFlizada comsucessoemmaisdeumcontexto.

Page 21: Refactoring com Padrões de Projeto

PADRÕESDEPROJETO

“Cada padrão descreve um problema nonossoambienteeonúcleoda sua solução,de tal forma que você possa uClizar estasolução mais de ummilhão de vezes, semnuncafazê-lodamesmamaneira”

CristopherAlexander

Page 22: Refactoring com Padrões de Projeto

#QuantomaispadrõeseuuXlizar,melhorvaificaromeucódigo?”

Page 23: Refactoring com Padrões de Projeto

#PADRÕESDEPROJETO

Page 24: Refactoring com Padrões de Projeto

MANTRADEV

BAIXOACOPLAMENTOEALTACOESÃO

Page 25: Refactoring com Padrões de Projeto

PADRÕESDEPROJETO• CreaFonal• Abstraemoprocessodeinstanciaçãodosobjetos

• Strucutural• Sepreocupamcomaformacomoclasseseobjetossãocompostosparaformarestruturasmaiores

• Behavioral• Sepreocupamcomalgoritmoseaatribuiçãoderesponsabilidadesentreobjetos.

Page 26: Refactoring com Padrões de Projeto

OBSERVER“Define uma dependência um-para-muitosentreobjetosdemodoquequandoum objeto muda o estado, todos seusdependentessãonoCficadoseatualizadosautomaCcamente. Permite que objetosinteressados sejamavisados damudançade estado ou outros eventos ocorrendonumoutroobjeto”

ErichGamma

Page 27: Refactoring com Padrões de Projeto

CASE–“BOLSADEVALORES”

Page 28: Refactoring com Padrões de Projeto

OBSERVER

Page 29: Refactoring com Padrões de Projeto
Page 30: Refactoring com Padrões de Projeto

DECORATOR“ D i n a m i c a m e n t e , a g r e g a rresponsabilidadesadicionaisaobjetos.OsDecorators fornecem uma alternaCvaflexível ao uso de subclasses paraextensãodefuncionalidades.”

ErichGamma

Page 31: Refactoring com Padrões de Projeto

CASE-FRETE

Page 32: Refactoring com Padrões de Projeto

DECORATOR

Page 33: Refactoring com Padrões de Projeto
Page 34: Refactoring com Padrões de Projeto
Page 35: Refactoring com Padrões de Projeto

STRATEGY“Definir uma família de algoritmos,encapsular cada uma delas e torna-lasintercambiáveis. Strategy permite que oalgoritmo varie independentemente dosclientesqueouXlizam”

ErichGamma

Page 36: Refactoring com Padrões de Projeto

CASE–“FORMASDEPAGAMENTO”

Page 37: Refactoring com Padrões de Projeto

STRATEGY

Page 38: Refactoring com Padrões de Projeto

STRATEGY

Page 39: Refactoring com Padrões de Projeto
Page 40: Refactoring com Padrões de Projeto

BOASPRÁTICAS

1.  Codifiqueorientadoainterfacesenãoaimplementação

2.  Evite a herança e favoreça acomposição

3.  Obtenha baixo acoplamento e altacoesão

4.  UXlizepadrõesdeprojeto5.  Nãotenhamedoderefactoring

Page 41: Refactoring com Padrões de Projeto

DICASDELIVRO

Page 42: Refactoring com Padrões de Projeto

DICASDELIVRO

Page 43: Refactoring com Padrões de Projeto

DICASDELIVRO

Page 44: Refactoring com Padrões de Projeto

www.reinaldojr.com

Page 46: Refactoring com Padrões de Projeto