ݺߣ

ݺߣShare a Scribd company logo
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ńczysz	dopiero	wtedy,	gdy	już	
jesteś	kompletnie	wyczerpany!	
Jedna	pomyłka	i	jesteś	umoczony	do	
końca	życia!	
Refaktoryzacja jest jak seks, ponieważ ...
Naturalny Porządek Refaktoryzacji (R) 3
Naturalny Porządek Refaktoryzacji ®
www.bnsit.pl
Więcej	się	o	tym	mówi	niż	robi.	
	
Można	to	robić	dla	przyjemności	lub	
dla	pieniędzy.	
	
Przydaje	się	druga	osoba,	żeby	
uzyskać	pełną	satysfakcję.	
Refaktoryzacja jest jak seks, ponieważ ...
Naturalny Porządek Refaktoryzacji (R) 4
Naturalny Porządek Refaktoryzacji ®
www.bnsit.pl
Początkujący	robią	wokół	tego	dużo	
szumu.	
Niektórzy	w	tym	obszarze	są	szczególnie	
utalentowani,	
	
..	ale	niektórzy	są	w	tym	bardzo	kiepscy	i	
obrzucą	Cię	błotem,	jeśli	im	to	wytkniesz.	
Refaktoryzacja jest jak seks, ponieważ ...
Naturalny Porządek Refaktoryzacji (R) 5
Naturalny Porządek Refaktoryzacji ®
www.bnsit.pl
	
Słabo	idzie	po	pijanemu,	ale	wtedy	
masz	na	to	największą	ochotę.	
Będzie	Ci	tego	brakować,	jeśli	
będziesz	miał	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,Zmian	a.TEN,I	!
prOcEs!,,i.Tylko,liCzba,nasiLA,	,AcZkoLwiek,powi
aZaniIntErakCjI	poniEkAD!!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
Wprowadzanie	zmian	do	oprogramowania	
(nazywanych	często	progresywnymi)	
zwykle	narusza	pierwotną	strukturę	
programu,	a	kumulacja	zmian	tylko	ten	
proces	nasila.	Liczba	powiązań	i	interakcji	
pomiędzy	różnymi	modułami	w	systemie	
zwiększa	się,	co	utrudnia	zrozumienie	go,	
a	także	jego	dalsze	modyfikacje.	
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.  Dla	każdego	punktu	decyzyjnego	(if, while,
for, and, or, try, case, break,
continue)	złożoność++
3.  Jeśli	6 <= złożoność <= 10 –	uprość	metodę	
4.  Jeśli	złożoność > 10 –	zdekomponuj	
metodę	
Analiza złożoności wg McCabe’a
Najlepsze strategie skutecznych programistów 13
www.bnsit.pl
Wysoka	
złożoność/rzadkie	
zmiany	
Kod	którego	nie	
ruszamy	
Wysoka	
złożoność/
częste	zmiany	
Tu	
refaktoryzujemy	
Niska	
złożoność/
rzadkie	zmiany	
Ualsy,	dobre	do	
eksperymentów	
Niska	
złożoność/
częste	zmiany	
Heaven	
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ęsto	najtrudniejszy	element	gry	
#  Działaj	w	takiej	kolejności	
•  Poproś	o	pomoc	autora	
•  Poproś	o	pomoc,	kogoś	kto	pracował	z	tym	
kodem	
•  Poproś	o	pomoc,	kogoś	kto	zna	system	
•  Zrób	to	sam	
Zrozum kod
Naturalny Porządek Refaktoryzacji (R) 17
www.bnsit.pl
Narzędzia	mentalne	
	
Czyszczenie	kodu	
Popraw	nazewnictwo	
Dodaj	tymczasowe	komentarze	do	kodu	
Wprowadź	późną	inicjalizację		
Optycznie	popraw	kod	(wprowadź	więcej	przestrzeni)	
Scratch	refactoring	
Refaktoryzacja	rozpoznawcza,	która	zostanie	wyrzucona	do	
koszta	
Główny	cel,	to	lepiej	zrozumieć,	co	się	dzieje	w	kodzie	
Wykonywana	w	prostym	edytorze	tekstu	(bez	IDE)	
Zrozum
Natural Course of Refactoring 2014 18
www.bnsit.pl
Są	to	komentarze	tymczasowe	na	czas	
refaktoryzacji	
// 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
Cel	
Doprowadź	do	stanu	„kod	mówi	do	Ciebie”	
	
Główne	narzędzia	
•  Compose	method	
•  Introduce	Method	Object	
•  Extract	method	
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ś	istotne	prywatne	metody	do	innych	
klas.	
	
Jeśli	widzisz,	że	metoda	prywatna	jest	warta	
przetestowania,	to	znajdź	dla	niej	miejsce	w	
innej	klasie,	w	której	będzie	publiczna.	
Wydziel odpowiedzialności
Natural Course of Refactoring 2014 23
www.bnsit.pl
Narzędzia	
Zasada	pojedynczej	odpowiedzialności	
Move	method	
Extract	class	
Introduce	Domain	Object	
Introduce	Value	Object	
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ąca	z	wymagań	
np.	obsługa	5	sposobów	algorytmu	szyfrowania	
	
Elastyczność,	która	ewoluuje	z	kodu	
np.	napisaliście	z	zespołem	7	podobnych	klas	do	obsługi	
raportów	
	
	
	
Nie	przewiduj	elastyczności	
Czy NA PEWNO elastyczność jest potrzebna?
Natural Course of Refactoring 2014 26
www.bnsit.pl
Narzędzia	
S.O.L.I.D.	
Wzorce	projektowe	
Refaktoryzacja	do	wzorcó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
To	zawsze	strategiczna	decyzja.	
	
Przydatną	praktyką	są	Design	Retrospecave,	
gdzie	tego	typu	tematy	są	dyskutowane.	
	
	
	
Rozwiń architekturę
Natural Course of Refactoring 2014 29
www.bnsit.pl
Narzędzia	
Wprowadzenie/usunięcie	warstwy	
Wprowadznie	lub	usunięcie	ORM/NoSQL/?	
Istotna	zmiana	bloków	budujących	
Zmiana	lub	wprowadznie	frameworka	
Wprowadzenie	zdarzeń	
Wprowadzenie	maszyny	stanowej	
Zmiana	w	kierunku	DDD,	Microservices,	CQRS	
Wprowadzenie	Bounded-Context	(DDD)	
Zastosowanie	Anacorrupaon	Layer	
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
Everyday	refactoring	
											Strategic	refactoring
www.bnsit.pl
Mariusz Sieraczkiewicz
Naturalny porządek refaktoryzacji
Mariusz Sieraczkiewicz @ BNS IT
m.sieraczkiewicz@bnsit.pl
http://blog.technicalleadership.pl
@ms_bnsit_pl
?

More Related Content

Naturalny porządek refaktoryzacji