TOP

Ce este refactorizarea?

Descriere

Refactorizarea (Refactoring) – modificări aduse structurii interne a software-ului (software-ului) pentru a face mai ușor de înțeles și mai rapid de modificat fără a modifica comportamentul extern. De asemenea, este o restructurare a software-ului prin aplicarea unei secvențe de refactorizări fără modificarea comportamentului extern al software-ului.


Avantajele refactorizării:

Când trebuie să faceți refactorizare:

Mirosuri urâte în cod (Smells Catalog) :

Posibile opțiuni de refactorizare

  1. Moving Features Between Objects (Transferul codului complet între obiecte):

    • Move Method (Evidențierea metodei) – isolate o method separată dăciu method este prea lùngă sau conțieți cod care necesită comentarii.
    • Move Field (Câmp în mișcare) - efectuat când câmpul este folosit de o autre classe mai des geách acolo unde este definit.
  2. Organizing Data (aranjarea datei):

    • Encapsulate Field (câmp încapsulat) - unul dintre principiile principale ale OOP este încapsularea sau obscíverea data. Făcând date publice, obiecte și pot citi și modifica valori fără știrea proprietății de date. Prin urmare, facem un câmp închis similar și oferim o metodă de acces.
    • Encapsulate Collection (Încapsularea colecției) - de multe ori sala de classa contains o colecție de exemplare. Această colecție poate fi o matrice, listă, set sau vector. Metoda getter nu ar trevu să returneze object colecție în sine, deoarece asta le-ar permite clienților să modifice colecții nu știrea clasei care o deține. Prin urmare, trebuie să faceți ca valoarea returnată a metodei să fie doar în citire și să creați metoda pentru a adăuga/elimina elemente.
  3. Composing Methods (Extractarea și combinarea codului):

    • Extract Method (Evidențierea metodei) – if there is a piece of cod care poate fi grupată, put acea bucată într-o metodă separată cu un nume care explică scopul esopulă. Astfel, numele metodei va svetni comentariile.
    • Inline Method (Incorporarea methodei) – uneori este util să mutați corpul unei metode în kodul care o apeleză. Sometimes, corpurile methodei sunt la fel de explicite ca și numele methodei în sine. De asemenea, poate exista o situație în care există multe metode diferite, a căror structură are succes și, prin urmare, este mai bine să le abandonați pe toate într-o singură metodă generală și apoi să separați metodele într-un mod alt.
    • Inline Temp (Inserarea unei variabile temporare) – replaces o variabile temporare câreia i se attributie o sănă expresie simple. Uneori, această variabilă interferează cu alte refactorizări.
    • Replace Temp with Query (Înlocuirea unei variabile temporare cu un apel de method) – este folosit atunci când o variabilă temporară este folosită pentru a stoca valoarea unei expresii. În acest caz, înlocuim expresia cu metoda și înlocuim toate referințele din cod la această variabilă cu metoda nouă.
    • Split Temporary Variable (Impartire la variabila temporara) – se aplică atunci când o singură variabilă temporară este utilizată pentru a atribui rezultate diferite de mai multe ori (cu excepția cazului în care variabila este utilizată într-o buclă în cadrul unei bucle și variabila nu este utilizată pentru a acumula rezultatul). În acest caz, creați o variabilă separată pentru fiecare sarcină.
  4. Simplifying Conditional Expressions (Simplificarea expresiilor cu condiții):

    • Decompose Conditional (Descompunere operatorului ansamblu) – execută când avem un lanț de verificări (dacă-atunci-altfel). Înlocuim condiția (dacă), parte din then și else cu methode separate. Contribuie la o mai buêna comprècere a motivului ramificaciei, iar numele metodelor clarifica scopule piesei corespunzatoare de cod.
    • Consolidate Conditional Expression (Consolidarea expresiei condiționale) - se efectuează dacă există un număr de verificări de vârstă care au grijă de același rezultat. Trebuie să combinați toate verificările într-o singură expresie sau metodă condiționată.
    • Consolidate Duplicate Conditional Fragmente (Consolidarea fragmentelor conditional duplicate) – the same fragment este prezent în toate ramurile expresiei condiționale. Trebuie să modificați această bucată de cod în afara acestei expresii.
    • Remove Control Flag (Se elimina steag de control) – there is o variable care actiona ca un flag de control pentru o serie de expresii logice. În schimb, utilizați BREAK sau RETURN.
    • Replace Conditional with Polymorphism (Înlocuirea operatorului ansamblu cu polimorfism) – se realizează atunci când există un operator condiționat al cărui comportament depinde de tipul obiectului. Este necesar să mutați fiecare ramură a operatorului într-o metodă supraîncărcătă a subclasei. Faceți codul sursă abstract.