www.bnsit.pl
Naturalny porządek refaktoryzacji
Mariusz Sieraczkiewicz @ BNS IT [email protected]
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 [email protected]
http://blog.technicalleadership.pl @ms_bnsit_pl
?
Top Related