Download - Naturalny porządek refaktoryzacji
![Page 1: Naturalny porządek refaktoryzacji](https://reader031.vdocuments.net/reader031/viewer/2022022413/58ef01f41a28abd6038b4595/html5/thumbnails/1.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022022413/58ef01f41a28abd6038b4595/html5/thumbnails/2.jpg)
www.bnsit.pl
Dlaczego refaktoryzacja jest jak seks? Naturalny Porządek Refaktoryzacji ®
![Page 3: Naturalny porządek refaktoryzacji](https://reader031.vdocuments.net/reader031/viewer/2022022413/58ef01f41a28abd6038b4595/html5/thumbnails/3.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022022413/58ef01f41a28abd6038b4595/html5/thumbnails/4.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022022413/58ef01f41a28abd6038b4595/html5/thumbnails/5.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022022413/58ef01f41a28abd6038b4595/html5/thumbnails/6.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022022413/58ef01f41a28abd6038b4595/html5/thumbnails/7.jpg)
www.bnsit.pl
Eksperyment Naturalny Porządek Refaktoryzacji ®
![Page 8: Naturalny porządek refaktoryzacji](https://reader031.vdocuments.net/reader031/viewer/2022022413/58ef01f41a28abd6038b4595/html5/thumbnails/8.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022022413/58ef01f41a28abd6038b4595/html5/thumbnails/9.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022022413/58ef01f41a28abd6038b4595/html5/thumbnails/10.jpg)
www.bnsit.pl
Rodzaje refaktoryzacji Naturalny porządek refaktoryzacji
Natural Course of Refactoring 2014 10
![Page 11: Naturalny porządek refaktoryzacji](https://reader031.vdocuments.net/reader031/viewer/2022022413/58ef01f41a28abd6038b4595/html5/thumbnails/11.jpg)
www.bnsit.pl
Dwie siły w refaktoryzacji
Naturalny Porządek Refaktoryzacji (R) 11
![Page 12: Naturalny porządek refaktoryzacji](https://reader031.vdocuments.net/reader031/viewer/2022022413/58ef01f41a28abd6038b4595/html5/thumbnails/12.jpg)
www.bnsit.pl
Co refaktoryzować strategicznie?
Naturalny Porządek Refaktoryzacji (R) 12
![Page 13: Naturalny porządek refaktoryzacji](https://reader031.vdocuments.net/reader031/viewer/2022022413/58ef01f41a28abd6038b4595/html5/thumbnails/13.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022022413/58ef01f41a28abd6038b4595/html5/thumbnails/14.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022022413/58ef01f41a28abd6038b4595/html5/thumbnails/15.jpg)
www.bnsit.pl
Naturalny Porządek Refaktoryzacji ®
![Page 16: Naturalny porządek refaktoryzacji](https://reader031.vdocuments.net/reader031/viewer/2022022413/58ef01f41a28abd6038b4595/html5/thumbnails/16.jpg)
www.bnsit.pl
Krok 0. Zrozum kod
Natural Course of Refactoring 2014 16
![Page 17: Naturalny porządek refaktoryzacji](https://reader031.vdocuments.net/reader031/viewer/2022022413/58ef01f41a28abd6038b4595/html5/thumbnails/17.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022022413/58ef01f41a28abd6038b4595/html5/thumbnails/18.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022022413/58ef01f41a28abd6038b4595/html5/thumbnails/19.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022022413/58ef01f41a28abd6038b4595/html5/thumbnails/20.jpg)
www.bnsit.pl
Krok 1. Wyraź algorytm
Natural Course of Refactoring 2014 20
![Page 21: Naturalny porządek refaktoryzacji](https://reader031.vdocuments.net/reader031/viewer/2022022413/58ef01f41a28abd6038b4595/html5/thumbnails/21.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022022413/58ef01f41a28abd6038b4595/html5/thumbnails/22.jpg)
www.bnsit.pl
Krok 2. Wydziel odpowiedzialności
Natural Course of Refactoring 2014 22
![Page 23: Naturalny porządek refaktoryzacji](https://reader031.vdocuments.net/reader031/viewer/2022022413/58ef01f41a28abd6038b4595/html5/thumbnails/23.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022022413/58ef01f41a28abd6038b4595/html5/thumbnails/24.jpg)
www.bnsit.pl
NarzędziaZasadapojedynczejodpowiedzialnościMovemethodExtractclassIntroduceDomainObjectIntroduceValueObject
Wydziel odpowiedzialności
Natural Course of Refactoring 2014 24
![Page 25: Naturalny porządek refaktoryzacji](https://reader031.vdocuments.net/reader031/viewer/2022022413/58ef01f41a28abd6038b4595/html5/thumbnails/25.jpg)
www.bnsit.pl
Krok 3. Wprowadź elastyczność
Natural Course of Refactoring 2014 25
![Page 26: Naturalny porządek refaktoryzacji](https://reader031.vdocuments.net/reader031/viewer/2022022413/58ef01f41a28abd6038b4595/html5/thumbnails/26.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022022413/58ef01f41a28abd6038b4595/html5/thumbnails/27.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022022413/58ef01f41a28abd6038b4595/html5/thumbnails/28.jpg)
www.bnsit.pl
Krok 4. Rozwiń architekturę
Natural Course of Refactoring 2014 28
![Page 29: Naturalny porządek refaktoryzacji](https://reader031.vdocuments.net/reader031/viewer/2022022413/58ef01f41a28abd6038b4595/html5/thumbnails/29.jpg)
www.bnsit.pl
Tozawszestrategicznadecyzja.PrzydatnąpraktykąsąDesignRetrospecave,gdzietegotyputematysądyskutowane.
Rozwiń architekturę
Natural Course of Refactoring 2014 29
![Page 30: Naturalny porządek refaktoryzacji](https://reader031.vdocuments.net/reader031/viewer/2022022413/58ef01f41a28abd6038b4595/html5/thumbnails/30.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022022413/58ef01f41a28abd6038b4595/html5/thumbnails/31.jpg)
www.bnsit.pl Natural Course of Refactoring 2014 31
![Page 32: Naturalny porządek refaktoryzacji](https://reader031.vdocuments.net/reader031/viewer/2022022413/58ef01f41a28abd6038b4595/html5/thumbnails/32.jpg)
www.bnsit.pl Natural Course of Refactoring 2014 32
Everydayrefactoring
Strategicrefactoring
![Page 33: Naturalny porządek refaktoryzacji](https://reader031.vdocuments.net/reader031/viewer/2022022413/58ef01f41a28abd6038b4595/html5/thumbnails/33.jpg)
www.bnsit.pl
Mariusz Sieraczkiewicz
Naturalny porządek refaktoryzacji
Mariusz Sieraczkiewicz @ BNS IT [email protected]
http://blog.technicalleadership.pl @ms_bnsit_pl
?