Dla developerów‎ > ‎OOA / OOD‎ > ‎

Refaktoryzacja w pięciu krokach.

opublikowane: 29 paź 2012, 13:03 przez Przemysław Hojnacki   [ zaktualizowane 29 paź 2012, 15:33 ]

Refaktoryzacja

Refaktoryzacja


Kiedyś nie mówiło się o refaktoryzacji, teraz każdy programista o tym mówi, a kierownictwo i zarząd wiedzą o co chodzi. Nie wszyscy wiedzą jak refaktoryzować. Lektura podręcznika dobrego programisty "Czysty kod" Uncle Bob'a (Robert'a C. Martin'a) odpowie na wiele pytań związanych z przekształcaniem nieczytelnego kodu w czysty. W tym poście zajmiemy się jednak próbą ustandaryzowania przekształceń do pięciu kroków. Inspiracją do tego tekstu jest wykład Mariusza Sieraczkiewicza na Java Developer Days 2012.

KROK 1

Mając dany odziedziczony po kimś kod próbujemy go zrozumieć. Na tym etapie dokonujemy też wstępnego oczyszczenia:
  •  nieczytelne nazwy zmiennych zamieniamy na znaczące nazwy zmiennych
  •  nieczytelne instrukcje warunkowe -> próbujemy nazwać warunki wyodrębniając je do funkcji zwracającej typ boolean.
  •  case'y, podobne do siebie pętle, zręby kodu będące kandydatami do innych prywatnych funkcji komentujemy (zapachy kodu).
Na tym etapie stosujemy bardzo proste poprawki - najważniejsze aby wiedzieć dokładnie co dany kod (algorytm) robi.

Zrozumieć i zapisać algorytm


Zrozumieć





KROK 2

Na wstępnie oczyszczonym kodzie stosujemy wzorzec Compose Method. Po zastosowaniu go kod ma wyglądać jak zbiór zdań czytanych od lewej do prawej i od góry do dołu, samokomentujący się. W tym celu dzielimy go na krótkie metody prywatne, z których każda wyraża swoją intencję i każda jest na jednym poziomie szczegółowości (najczęściej stosowana refaktoryzacja - extract method).

Zastosować wzorzec Compose Method

Compose Method




KROK 3

Po poprzednim kroku otrzymujemy ogromną klasę z wieloma prywatnymi, krótkimi metodami. Teraz wydzielamy odpowiedzialności. Tworzymy nowe klasy i umieszczamy w nich logicznie powiązane ze sobą metody. Stosujemy refaktoryzacje extract class oraz move method.

Wydziel odpowiedzialności

Wydziel odpowiedzialności



KROK 4

Trzeba mieć oczy szeroko otwarte i być przygotowanym na zastosowanie wzorców w wyodrębnionych klasach aby kod uczynić elastycznym (musimy wiedzieć w jakim kierunku kod będzie ewoluował). Polecam dobrą lekturę do wzorców GoF: "Head First - Design Patterns" O'REILLY.

Wprowadzić elastyczność

Elastyczność




KROK 5

Raz na jakiś czas trzeba też przemyśleć czy nie należy zastosować któregoś ze wzorców architektonicznych aby system ewoluował, dodać nową bądź usunąć jakąś zbędną warstwę systemu.

Zastosuj wzorce architektoniczne, usuń / dodaj warstwy abstrakcji

Wzorce architektoniczne


Comments