Naturalny porządek refaktoryzacji

33
Naturalny porządek refaktoryzacji Mariusz Sieraczkiewicz @ BNS IT m.sieraczkiewicz@bnsit.pl http://blog.technicalleadership.pl @ms_bnsit_pl

Transcript of Naturalny porządek refaktoryzacji

Page 1: Naturalny porządek refaktoryzacji

www.bnsit.pl

Naturalny porządek refaktoryzacji

Mariusz Sieraczkiewicz @ BNS IT [email protected]

http://blog.technicalleadership.pl @ms_bnsit_pl

Page 2: Naturalny porządek refaktoryzacji

www.bnsit.pl

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

Page 3: 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 ®

Page 4: 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 ®

Page 5: 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 ®

Page 6: 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 ®

Page 7: Naturalny porządek refaktoryzacji

www.bnsit.pl

Eksperyment Naturalny Porządek Refaktoryzacji ®

Page 8: 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

Page 9: Naturalny porządek refaktoryzacji

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

Page 10: Naturalny porządek refaktoryzacji

www.bnsit.pl

Rodzaje refaktoryzacji Naturalny porządek refaktoryzacji

Natural Course of Refactoring 2014 10

Page 11: Naturalny porządek refaktoryzacji

www.bnsit.pl

Dwie siły w refaktoryzacji

Naturalny Porządek Refaktoryzacji (R) 11

Page 12: Naturalny porządek refaktoryzacji

www.bnsit.pl

Co refaktoryzować strategicznie?

Naturalny Porządek Refaktoryzacji (R) 12

Page 13: Naturalny porządek refaktoryzacji

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

Page 14: Naturalny porządek refaktoryzacji

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ść

Page 15: Naturalny porządek refaktoryzacji

www.bnsit.pl

Naturalny Porządek Refaktoryzacji ®

Page 16: Naturalny porządek refaktoryzacji

www.bnsit.pl

Krok 0. Zrozum kod

Natural Course of Refactoring 2014 16

Page 17: Naturalny porządek refaktoryzacji

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

Page 18: Naturalny porządek refaktoryzacji

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

Page 19: Naturalny porządek refaktoryzacji

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

Page 20: Naturalny porządek refaktoryzacji

www.bnsit.pl

Krok 1. Wyraź algorytm

Natural Course of Refactoring 2014 20

Page 21: Naturalny porządek refaktoryzacji

www.bnsit.pl

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

Wyraź algorytm

Natural Course of Refactoring 2014 21

Page 22: Naturalny porządek refaktoryzacji

www.bnsit.pl

Krok 2. Wydziel odpowiedzialności

Natural Course of Refactoring 2014 22

Page 23: Naturalny porządek refaktoryzacji

www.bnsit.pl

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

Wydziel odpowiedzialności

Natural Course of Refactoring 2014 23

Page 24: Naturalny porządek refaktoryzacji

www.bnsit.pl

NarzędziaZasadapojedynczejodpowiedzialnościMovemethodExtractclassIntroduceDomainObjectIntroduceValueObject

Wydziel odpowiedzialności

Natural Course of Refactoring 2014 24

Page 25: Naturalny porządek refaktoryzacji

www.bnsit.pl

Krok 3. Wprowadź elastyczność

Natural Course of Refactoring 2014 25

Page 26: Naturalny porządek refaktoryzacji

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

Page 27: Naturalny porządek refaktoryzacji

www.bnsit.pl

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

Zastosuj wzorce projektowe

Natural Course of Refactoring 2014 27

Page 28: Naturalny porządek refaktoryzacji

www.bnsit.pl

Krok 4. Rozwiń architekturę

Natural Course of Refactoring 2014 28

Page 29: Naturalny porządek refaktoryzacji

www.bnsit.pl

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

Rozwiń architekturę

Natural Course of Refactoring 2014 29

Page 30: Naturalny porządek refaktoryzacji

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

Page 31: Naturalny porządek refaktoryzacji

www.bnsit.pl Natural Course of Refactoring 2014 31

Page 32: Naturalny porządek refaktoryzacji

www.bnsit.pl Natural Course of Refactoring 2014 32

Everydayrefactoring

Strategicrefactoring

Page 33: Naturalny porządek refaktoryzacji

www.bnsit.pl

Mariusz Sieraczkiewicz

Naturalny porządek refaktoryzacji

Mariusz Sieraczkiewicz @ BNS IT [email protected]

http://blog.technicalleadership.pl @ms_bnsit_pl

?