refactoring com padrões de projeto

Post on 07-Feb-2017

99 Views

Category:

Software

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

REFACTORINGCOMPADRÕESDEPROJETO

REINALDOJR2016

•  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

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

#ÉpossívelConstruirSoftware

Autosustentável?

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

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

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

“ReinaldoJrJ”

OBJETIVOGERAL

• 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

#OQUETEIMPEDEDEFAZERISTO?

CENÁRIOATUAL

CENÁRIOATUAL

CENÁRIOATUAL

#EQUALÉORESULTADO?

CENÁRIOATUAL

CENÁRIOATUAL

#DEFINIÇÕES

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”

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.

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

#QuantomaispadrõeseuuXlizar,melhorvaificaromeucódigo?”

#PADRÕESDEPROJETO

MANTRADEV

BAIXOACOPLAMENTOEALTACOESÃO

PADRÕESDEPROJETO• CreaFonal• Abstraemoprocessodeinstanciaçãodosobjetos

• Strucutural• Sepreocupamcomaformacomoclasseseobjetossãocompostosparaformarestruturasmaiores

• Behavioral• Sepreocupamcomalgoritmoseaatribuiçãoderesponsabilidadesentreobjetos.

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

CASE–“BOLSADEVALORES”

OBSERVER

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

CASE-FRETE

DECORATOR

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

ErichGamma

CASE–“FORMASDEPAGAMENTO”

STRATEGY

STRATEGY

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

DICASDELIVRO

DICASDELIVRO

DICASDELIVRO

www.reinaldojr.com

rsjrnet@gmail.comwww.reinaldojr.com

top related