Skip to content

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: