Refakcija (angl. refactoring) – tai programavimo proceso dalis, kai programos kodas yra pakeičiamas taip, kad jo funkcionalumas išlieka toks pat, bet pats kodas tampa aiškesnis, struktūrizuotesnis, lengviau palaikomas arba efektyvesnis. Tai nėra naujų funkcijų kūrimas ar klaidų taisymas, o kodo tobulinimas be jo veikimo pakeitimo.
Pagrindiniai tikslai:
- Sumažinti sudėtingumą.
- Padidinti skaitomumą.
- Palengvinti tolimesnį plėtojimą.
- Pašalinti pasikartojančius fragmentus („kodo kvapą“).
Pavyzdžiai:
1. Pavyzdys: Funkcijos pertvarkymas
Prieš refakciją:
python
def skaiciuoti_suma(mokesciai):
s = 0
for m in mokesciai:
s += m
return s
Po refakcijos (naudojant standartinę funkciją):
python
def skaiciuoti_suma(mokesciai):
return sum(mokesciai)
2. Pavyzdys: Kodo struktūros supaprastinimas
Prieš refakciją (ilga sąlygų grandinė):
javascript
if (amzius >= 18) {
if (pajamos > 1000) {
if (miestas === "Vilnius") {
// veiksmas
}
}
}
Po refakcijos (aiškesnė logika):
javascript
const yraPilnametis = amzius >= 18;
const turiPakankamasPajamas = pajamos > 1000;
const gyvenaVilniuje = miestas === "Vilnius";
if (yraPilnametis && turiPakankamasPajamas && gyvenaVilniuje) {
// veiksmas
}
3. Pavyzdys: Pasikartojančio kodo pašalinimas
Prieš refakciją (tas pats kodas keliuose failuose):
java
public void printUserInfo(User u) {
System.out.println("Vardas: " + u.getName());
System.out.println("El. paštas: " + u.getEmail());
}
// ... toks pat metodas kitame faile
Po refakcijos (išskirta į bendrą klasę):
java
public class Printer {
public static void printUserInfo(User u) {
System.out.println("Vardas: " + u.getName());
System.out.println("El. paštas: " + u.getEmail());
}
}
Svarbu: Refakcija dažnai atliekama mažais žingsneliais, nuolat testuojant, kad niekas nenutrūktų. Tai yra kasdienė geros programavimo praktikos dalis.
Jūsų pataisymai bus išsiųsti moderatorių peržiūrai, jei informacija tikslesnė/taisyklingesnė
ji bus patalpinta vietoj esamos.