Refactoring
Literatura jest całkiem zgodna co do tego, czym jest refaktoring: jest to zmiana wewnętrznej struktury oprogramowania bez zmian jego obserwowalnych zachowań. Nawiązując natomiast do finansowej metafory, jest to moment spłaty długu — oczywiście z odsetkami.
"CO?", a "JAK?"
Przy rozróżnieniu między obserwowalnymi zachowaniami a wewnętrzną strukturą, pomocne stają się dwa pytania:
- "CO?" - co to robi
- "JAK?" - jak to działa
Tak oto publiczne funkcje wystawione przez system, czy moduł odpowiadają na pierwsze z pytań, czyli "co to robi?". Są to właśnie obserwowalne zachowania i w procesie refaktoringu ich nie zmieniamy.
Inaczej natomiast ma się sprawa w przypadku "jak to działa?", bo odpowiedź na to pytanie udziela wewnętrzna struktura, czyli prywatna implementacja zachowań modułu. Została ona wybrana przy zaciąganiu długu technicznego, świadomie bądź nie, a jej zmiana w procesie refaktoringu, zmienia również odpowiedź na to pytanie.
Refactoring a Rewrite
Przy temacie refaktoringu, często pojawia się też motyw przepisania, czyli tzw. rewrite.
Sprawa jest prosta, jeśli mamy do czynienia z wymianą technologi, bo wtedy faktycznie jest to przepisanie, a pobudką do tego raczej nie jest poprawa wewnętrznej struktury. Tym samym przepisania nie rozważamy wtedy w kontekście refactoringu.
Natomiast w momencie, gdy nie zmieniamy technologii, a struktura metody zmienia się w 100% bez zmian jej zewnętrznych zachowań, to możemy zacząć się zastanawiać, czy wykonaliśmy refactoring, czy przepisanie. Aby odpowiedzieć sobie na to pytanie, musimy popatrzeć na to co zrobiliśmy, z dalszej perspektywy. Dlatego, że przy refaktoringu na pewnym poziomie, na przykład klasy, czy modułu, tak naprawdę przepisujemy całkowicie niektóre z mniejszych struktur, jak metody.
Podsumowanie
Materiały: