Fogalomtár › Fejlesztői alapszavak
refaktorálás
angolul: refactoring
A refaktorálás a meglévő programkód belső rendbetétele úgy, hogy közben a program kívülről nézve pontosan ugyanazt csinálja, mint előtte.
Érthetően
Képzeld el, hogy átrendezed a konyhádat: a fűszerek egy polcra kerülnek, a ritkán használt edények felülre, a fiókok feliratot kapnak. Ugyanazokat az ételeket főzöd, mint eddig, de gyorsabban megtalálsz mindent, és a vendég is eligazodik. A refaktorálás ugyanez a programkóddal.
A programok az évek alatt toldozva-foldozva nőnek, és a kód egyre nehezebben olvasható. A refaktorálás során a fejlesztő átnevez, szétbont, összevon és egyszerűsít, de új funkciót nem ad hozzá, és a működésen sem változtat. A cél az, hogy a következő módosítás olcsóbb, gyorsabb és biztonságosabb legyen.
Ebben más, mint a hibajavítás vagy a fejlesztés: azok megváltoztatják, mit csinál a program, a refaktorálás csak azt, hogyan van megírva. Ezért a felhasználó jó esetben semmit sem vesz észre belőle.
Ma már a kódoló agentek is végeznek refaktorálást: megkéred őket, hogy tegyenek rendet egy régi kódrészben, és több fájlon átívelő átalakítást is elvégeznek. Az eredményt ettől még ellenőrizni kell.
Hogyan működik
- Először biztonsági háló készül: automatikus tesztek, amelyek rögzítik, hogyan viselkedik most a program.
- A fejlesztő vagy a kódoló agent megkeresi a problémás részeket: az ismétlődő kódot, a túl hosszú függvényeket, a félrevezető neveket.
- Kis lépésekben alakít: egy átnevezés, egy kiemelés, egy szétbontás, mindig csak egy dolog egyszerre.
- Minden lépés után lefutnak a tesztek. Ha valami elromlott, az utolsó apró lépést könnyű visszavonni.
- A végén a kód áttekinthetőbb és könnyebben bővíthető (nem feltétlenül rövidebb), a program viselkedése pedig változatlan.
Példa a mindennapokból
A cégetek megrendelőrendszerébe hónapok óta ígérnek egy új funkciót, de a fejlesztők azt mondják, előbb „refaktorálniuk kell”. Ez azt jelenti, hogy a régi kód annyira kusza, hogy előbb rendet kell tenni benne, különben az új funkció máshol hibákat okozna. Két hétig látszólag semmi sem változik, utána viszont a fejlesztés felgyorsul.
Kit érint
Gyakori félreértés
Korlátok és kockázatok
- Tesztek nélkül kockázatos, mert semmi sem jelzi, ha az átalakítás közben észrevétlenül megváltozott a program viselkedése.
- Nem hoz új funkciót és közvetlen bevételt, ezért az üzleti oldal könnyen halogatja, amíg a kód már alig módosítható.
- A kódoló agent magabiztosan végezhet olyan átalakítást, amely szépnek látszik, mégis elront egy ritka esetet, ezért a nagyobb változtatásokat embernek kell átnéznie.
- A rosszul megtervezett rendszert nem menti meg: az alapvető felépítési hibákhoz mélyebb áttervezés kell.
Hasonló, de nem ugyanaz
- újraírás – Az újraírásnál a régi kódot eldobják és nulláról kezdik, a refaktorálás a meglévőt javítja lépésenként.
- hibajavítás – A hibajavítás megváltoztatja a program hibás viselkedését, a refaktorálás szándékosan nem nyúl a viselkedéshez.
- optimalizálás – Az optimalizálás célja a gyorsabb vagy takarékosabb futás, a refaktorálásé az érthetőbb, könnyebben karbantartható kód.
Kapcsolódó fogalmak
szoftverfejlesztés, szoftverkarbantartás, kódminőség
átnevezés, függvénykiemelés, kódduplikáció megszüntetése
technikai adósság, kódoló agent, automatikus tesztelés, kódellenőrzés, örökölt rendszer
Röviden a története
A szót programozók már az 1980-as években használták. Tudományos igénnyel William Opdyke 1992-es doktori értekezése dolgozta ki. Széles körben Martin Fowler 1999-ben megjelent Refactoring című könyve tette ismertté, amely (2018-as második kiadásával együtt) máig a téma alapműve.
Hol tart most
A refaktorálás évtizedek óta a szoftverfejlesztés bevett gyakorlata, a fejlesztőeszközök beépítve támogatják. 2026 végére a kódoló agentek gyakori feladata lett, de a nagy átalakítások emberi ellenőrzése továbbra is szükséges.
Más nevei
refaktorálás · refaktorálás (refactoring) · kódrefaktorálás · kód-újraszervezés · kódátszervezés · refactoring · code refactoring · refactor
Források
A szócikk gépi szerkesztéssel készült és gépi szakmai lektoráláson ment át; a „hírekben” rész az Agent Age sztorijaiból automatikusan frissül.