TOP

Co to jest refaktoryzacja?

Opis

Refaktoryzacja (Refactoring) – zmiany wprowadzone w wewnętrznej strukturze oprogramowania (oprogramowania) w celu ułatwienia zrozumienia i szybszej modyfikacji bez zmiany zachowania zewnętrznego. Jest to także restrukturyzacja oprogramowania poprzez zastosowanie sekwencji refaktoryzacji bez zmiany zewnętrznego zachowania oprogramowania.


Zalety refaktoryzacji:

Kiedy musisz przeprowadzić refaktoryzację:

Nieprzyjemny zapach w kodzie (Smells Catalog) :

Możliwe opcje refaktoryzacji

  1. Moving Features Between Objects (Prezentacja całego kodu pomiędzy obiektami):

    • Move Method (Metoda oświetlenia) – wyizolować osobną metodę, jeśli jest za długa lub zawiera kod wymagający komentarza.
    • Move Field (Ruchome słup) - uzasadniony, gdy pole jest używane przez inną klasę częściej niż tam, gdzie jest alternatywne.
  2. Organizing Data (Struktura danych):

    • Encapsulate Field (hermetyzacja Pola) - jedną z zasad OOP jest enkapsulacja, czyli ukrywanie danych. Dzięki upublicznieniu obiekty danych mogą odczytywać i zmieniać swoje wartości bez wiedzy właściciela danych. Dlatego zamykamy pole i udostępniamy metody dostępu.
    • Encapsulate Collection (Hermetyzacja kollekcii) - często na zajęciach jest zbiór spraw. Ta kolekcja może mieć postać tabeli, listy, zestawu lub wektora. Metoda gettera nie powinna zwracać tego samego obiektu do kolekcji, ponieważ umożliwiłaby klientowi modyfikację zawartości kolekcji bez wiedzy klasy, która jest jej właścicielem. Dlatego należy ustawić wartość zwracaną metodą tylko do odcztu oraz stworzyć metody dodawania/usuwania elementów.
  3. Composing Methods (Wyodrębnianie i łunze kodu):

    • Extract Method (Metoda oświetlenia) – jeśli istnieje już fragment kodu, który można pogrupować, umieść go w osobnej metodzie o nazwie wyjaśniającej jego definicję. Zatem nazwa metody zastąpi komentarze.
    • Inline Method (Osadzanie metod) – czasami warto podać treść metod do kodu, która go dotyczy. Czasami metody treści są oczywiste, jak sama nazwa metod. Može tež zaistnieć sytuacja, gdy istnieje wiele dizračné metod, których struktura jest nieskuteczna, dlatego lepiej jest wruccije je wszystkie do jednej ogólnej metodya, a nadna rozdzielji metody w innym ségoj.
    • Inline Temp (Wprowadzenie tymczasowej) – zastąpienie tymczasowej, do której tylko raz przypisane jest wyrażenie proste. Czasami taka zmienna zakłóca inne refaktoryzacje.
    • Replace Temp with Query (Zastąpienie metody tymczasowej tymczasowej) – jest uzywanya jest zmienna tymczasowa, gdy do vyrażenia uzywazana przechowywanie wartości. W tym przypadku zastępujemy wyrażenie metodą, a wszystkie odniesienia w kodzie do tej zmiennej zostają zastąpione nową metodą.
    • Split Temporary Variable (Podzielna zmienna tymczasowa) – stosuje się, gdy do wielu wyników używana jest pojedyncza zmienna (z tą różnicą, że zmienna ta jest używana tylko dla każdej zmiennej i nie służy do akumulacji wyników). W takim przypadku dla kodego przypisania dwarsymy osobną zmienną.
  4. Simplifying Conditional Expressions (Upraszczanie wyrażone za pomocą warunków):

    • Decompose Conditional (Operator warunkowy Rozkład) – wykonywany, gdy mamy kontrolwy łańcuch kontroli (if-then-else). Zastupepamy warunek (if), część then i else parametrami metodami. Przyczynia się do lepszego pozrumenia straty rozbranchień, a nazwa metody wyszynajają cel odpowiedni fragment kodu.
    • Consolidate Conditional Expression (Konsolidacja warunków warunkowych) - przewądza się, ifję istjenie kilku kontroli kontrolli, co daje ten sam wynik. Należy połączyć wszystkie kontrolki w jednym wyrażeniu warunkowym lub metodzie.
    • Consolidate Duplicate Conditional Paprochy – ten sam fragment występuje we wszystkich gałęziach warunkowych. Należy przenieść fragment kodu poza wyrażenie.
    • Remove Control Flag (Usuwanie flagi kontrolnej) – istnie zmienna, która służy jako flaga ustalająca dla szeregu równań logicznych. Zamiast tego używamy break lub RETURN.
    • Replace Conditional with Polymorphism (Zastąpienie operatora polimorfizmem warunkowym) – jest wykonywana, gdy występuje operator warunkowy, którego zachowanie zależy od typu obiektu. Konieczne jest zastosowanie każdej gałęzi operatora warunkowego do przeciążonej metody podklasy. Upewnij się, że kod źródłowy jest abstrakcyjny.