Naturalny porządek refaktoryzacji

Post on 13-Apr-2017

277 views 0 download

Transcript of Naturalny porządek refaktoryzacji

www.bnsit.pl

Naturalny porządek refaktoryzacji

Mariusz Sieraczkiewicz @ BNS IT m.sieraczkiewicz@bnsit.pl

http://blog.technicalleadership.pl @ms_bnsit_pl

www.bnsit.pl

Dlaczego refaktoryzacja jest jak seks? Naturalny Porządek Refaktoryzacji ®

www.bnsit.pl

Kończyszdopierowtedy,gdyjużjesteśkompletniewyczerpany!

Jednapomyłkaijesteśumoczonydokońcażycia!

Refaktoryzacja jest jak seks, ponieważ ...

Naturalny Porządek Refaktoryzacji (R) 3

Naturalny Porządek Refaktoryzacji ®

www.bnsit.pl

Więcejsięotymmówiniżrobi.Możnatorobićdlaprzyjemnościlubdlapieniędzy.Przydajesiędrugaosoba,żebyuzyskaćpełnąsatysfakcję.

Refaktoryzacja jest jak seks, ponieważ ...

Naturalny Porządek Refaktoryzacji (R) 4

Naturalny Porządek Refaktoryzacji ®

www.bnsit.pl

Początkującyrobiąwokółtegodużoszumu.

Niektórzywtymobszarzesąszczególnieutalentowani,..aleniektórzysąwtymbardzokiepscyiobrzucąCiębłotem,jeśliimtowytkniesz.

Refaktoryzacja jest jak seks, ponieważ ...

Naturalny Porządek Refaktoryzacji (R) 5

Naturalny Porządek Refaktoryzacji ®

www.bnsit.pl

Słaboidziepopijanemu,alewtedymasznatonajwiększąochotę.

BędzieCitegobrakować,jeślibędzieszmiałdłuższąprzerwę.

Refaktoryzacja jest jak seks, ponieważ ...

Naturalny Porządek Refaktoryzacji (R) 6

Naturalny Porządek Refaktoryzacji ®

www.bnsit.pl

Eksperyment Naturalny Porządek Refaktoryzacji ®

www.bnsit.pl

wpROWadZAnIe.dozMian!A,!aczkolWIeK!aNazywaNyCH,opROgrAmOWaniA,iczesto!i!!prOgreSywnyMizwyKLE.poniEkAd,!PIeRWotna.StrUkturEnarusza.a.!PRoGramU.kUMulaCja,Zmiana.TEN,I!prOcEs!,,i.Tylko,liCzba,nasiLA,,AcZkoLwiek,powiaZaniIntErakCjIponiEkAD!!roZnymi!ponIekad!,I!pomieDzYModuLamiw,sYStemiEZWiEkSZasie!.a,co!,a,utruDniAzRoZUmienIe!!A,!acZKolwiek!I!..go,takzE!jEgO..modYfikacje..dalsze,

Co utrudnia dalsze modyfikacje oprogramowania?

Naturalny Porządek Refaktoryzacji (R) 8

www.bnsit.pl

Wprowadzaniezmiandooprogramowania(nazywanychczęstoprogresywnymi)zwyklenaruszapierwotnąstrukturęprogramu,akumulacjazmiantylkotenprocesnasila.Liczbapowiązańiinterakcjipomiędzyróżnymimodułamiwsystemiezwiększasię,coutrudniazrozumieniego,atakżejegodalszemodyfikacje.

Co utrudnia dalsze modyfikacje oprogramowania?

Naturalny Porządek Refaktoryzacji (R) 9

www.bnsit.pl

Rodzaje refaktoryzacji Naturalny porządek refaktoryzacji

Natural Course of Refactoring 2014 10

www.bnsit.pl

Dwie siły w refaktoryzacji

Naturalny Porządek Refaktoryzacji (R) 11

www.bnsit.pl

Co refaktoryzować strategicznie?

Naturalny Porządek Refaktoryzacji (R) 12

www.bnsit.pl

1.   złożoność := 1

2.  Dlakażdegopunktudecyzyjnego(if, while, for, and, or, try, case, break,

continue)złożoność++ 3.  Jeśli6 <= złożoność <= 10 –uprośćmetodę4.  Jeślizłożoność > 10 –zdekomponuj

metodę

Analiza złożoności wg McCabe’a

Najlepsze strategie skutecznych programistów 13

www.bnsit.pl

Wysokazłożoność/rzadkie

zmianyKodktóregonie

ruszamy

Wysokazłożoność/

częstezmianyTu

refaktoryzujemy

Niskazłożoność/

rzadkiezmianyUalsy,dobredoeksperymentów

Niskazłożoność/

częstezmianyHeaven

Co refaktoryzować? Kwadrant Feathersa

Najlepsze Strategie Skutecznych Programistów 14

Dodatkowo:•  wiedza

plemienna•  prognozy

biznesu

Częstośćzmian

Złożoność

www.bnsit.pl

Naturalny Porządek Refaktoryzacji ®

www.bnsit.pl

Krok 0. Zrozum kod

Natural Course of Refactoring 2014 16

www.bnsit.pl

#  Częstonajtrudniejszyelementgry

#  Działajwtakiejkolejności•  Poprośopomocautora•  Poprośopomoc,kogośktopracowałztymkodem

•  Poprośopomoc,kogośktoznasystem•  Zróbtosam

Zrozum kod

Naturalny Porządek Refaktoryzacji (R) 17

www.bnsit.pl

NarzędziamentalneCzyszczeniekoduPoprawnazewnictwoDodajtymczasowekomentarzedokoduWprowadźpóźnąinicjalizacjęOptyczniepoprawkod(wprowadźwięcejprzestrzeni)

ScratchrefactoringRefaktoryzacjarozpoznawcza,którazostaniewyrzuconadokosztaGłównycel,tolepiejzrozumieć,cosiędziejewkodzieWykonywanawprostymedytorzetekstu(bezIDE)

Zrozum

Natural Course of Refactoring 2014 18

www.bnsit.pl

Sątokomentarzetymczasowenaczasrefaktoryzacji // SMELL to mi brzydko pachnie – powtórzenie kodu

// REFACTOR wprowadź fabrykę

// NOTE wyślij komunikat // IDEA olśniło mnie

Komentarze w kodzie

Naturalny Porządek Refaktoryzacji (R) 19

www.bnsit.pl

Krok 1. Wyraź algorytm

Natural Course of Refactoring 2014 20

www.bnsit.pl

CelDoprowadźdostanu„kodmówidoCiebie”Głównenarzędzia•  Composemethod•  IntroduceMethodObject•  Extractmethod

Wyraź algorytm

Natural Course of Refactoring 2014 21

www.bnsit.pl

Krok 2. Wydziel odpowiedzialności

Natural Course of Refactoring 2014 22

www.bnsit.pl

Przenieśistotneprywatnemetodydoinnychklas.Jeśliwidzisz,żemetodaprywatnajestwartaprzetestowania,toznajdźdlaniejmiejscewinnejklasie,wktórejbędziepubliczna.

Wydziel odpowiedzialności

Natural Course of Refactoring 2014 23

www.bnsit.pl

NarzędziaZasadapojedynczejodpowiedzialnościMovemethodExtractclassIntroduceDomainObjectIntroduceValueObject

Wydziel odpowiedzialności

Natural Course of Refactoring 2014 24

www.bnsit.pl

Krok 3. Wprowadź elastyczność

Natural Course of Refactoring 2014 25

www.bnsit.pl

Elastycznośćwynikającazwymagańnp.obsługa5sposobówalgorytmuszyfrowania

Elastyczność,któraewoluujezkodunp.napisaliściezzespołem7podobnychklasdoobsługiraportów

Nieprzewidujelastyczności

Czy NA PEWNO elastyczność jest potrzebna?

Natural Course of Refactoring 2014 26

www.bnsit.pl

NarzędziaS.O.L.I.D.WzorceprojektoweRefaktoryzacjadowzorców

Zastosuj wzorce projektowe

Natural Course of Refactoring 2014 27

www.bnsit.pl

Krok 4. Rozwiń architekturę

Natural Course of Refactoring 2014 28

www.bnsit.pl

Tozawszestrategicznadecyzja.PrzydatnąpraktykąsąDesignRetrospecave,gdzietegotyputematysądyskutowane.

Rozwiń architekturę

Natural Course of Refactoring 2014 29

www.bnsit.pl

NarzędziaWprowadzenie/usunięciewarstwyWprowadznielubusunięcieORM/NoSQL/?IstotnazmianablokówbudującychZmianalubwprowadznieframeworkaWprowadzeniezdarzeńWprowadzeniemaszynystanowejZmianawkierunkuDDD,Microservices,CQRSWprowadzenieBounded-Context(DDD)ZastosowanieAnacorrupaonLayer

Rozwiń architekturę

Natural Course of Refactoring 2014 30

www.bnsit.pl Natural Course of Refactoring 2014 31

www.bnsit.pl Natural Course of Refactoring 2014 32

Everydayrefactoring

Strategicrefactoring

www.bnsit.pl

Mariusz Sieraczkiewicz

Naturalny porządek refaktoryzacji

Mariusz Sieraczkiewicz @ BNS IT m.sieraczkiewicz@bnsit.pl

http://blog.technicalleadership.pl @ms_bnsit_pl

?