Nehéz elkezdeni a régi nehézkesen módosítható rendszerek átalakításást, refakotrizálását. Sokkal többször hallom azt, hogy az egészet át kellene írni, mintsem azt, hogy csak szépen apránként felfejlesztük a programot a mostani igényekhez.
A refactoring lépései durván a következőek:
- teszt eredmény 1
- refactor
- teszt eredmény 2
Akkor sikeres, ha a redmény 2 és eredmény 1 megegyezik.
A régi, legacy rendszereknél (LS) leginkább a tesztelési része a kérdéses. Tipikusan nem tesztelhetően vannak megírva. Ha egy rendszere könnyen unit-tesztelehető, akkor az architektúrája is megfelelően rugalmas (általában). Másik, ami hiányzik, az automatikus tesztek. Nem csak a unit, de az egyéb integrációs tesztek is.
A megoldás az, hogy az első lépéseket nehezen, manuálisan kell végrehajtani. Első lépések bizony azok, hogy fogod a régit és az újjat és futtatod párhuzamosan. Ha ugyan az az eredmény,akkor eltehetően megegyezeik. Az első refactoring lépések szolgáljanak arra, hogy a komponensek közötti függőségeket csökkentsük. Amikor megvan könnyebben unittesztelhető és ezálltal a további refactoring is felgyorsul, hiszen a tesztek automatikusak lesznek. Csak egy gombnyomásés nem hossza kézi szemezgetés eredménye.
Az első lépés nehéz, de utána már könnyű.