Zpo-5-wyk-Slajd19

Z Studia Informatyczne
Wersja z dnia 06:49, 21 sie 2006 autorstwa Bwalter (dyskusja | edycje)
(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)
Przejdź do nawigacjiPrzejdź do wyszukiwania

Przykład: Inline Temp

Przykład: Inline Temp


Zmiana struktury programu może stanowić dla niego ogromne zagrożenie, jeżeli po jej zakończeniu będzie on działał inaczej. Dlatego najistotniejszym (i najtrudniejszym do spełnienia) warunkiem skutecznej i efektywnej refaktoryzacji jest zapewnienie, że nie wprowadzi ona do oprogramowania zmian w jego zachowaniu.

Rozpatrując prosty przykład przekształcenia polegającego na rozwinięciu zmiennej tymczasowej, łatwo zauważyć, że może ono spowodować nieprawidłowe zachowanie programu. Występująca w pierwotnej wersji wielokrotnie powtarzająca się instrukcja ++i, po wyłączeniu do zmiennej tymczasowej, jest wykonywana tylko raz. Jednak w w efekcie wartości pól tablicy tab będą różne od oczekiwanych i pierwotnych.

Zatem nawet proste przekształcenie, intuicyjne i zrozumiałe, może stanowić problem. Warto zastanowić się, jaki element jest jego faktyczną przyczyną, skoro wyłączenie wyrażenie postaci np. i+1 nie spowoduje zmiany zachowania programu..

Jest nią efekt uboczny powodowany przez wyłączaną instrukcję: zmiana wartości zmiennej i wewnątrz wyłączanego wyrażenia. Zatem to przekształcenie jest poprawne tylko wówczas, gdy wyrażenie wyłączane do zmiennej nie zmienia stanu systemu, w szczególności nie modyfikuje wartości żadnej ze zmiennych.


<< Poprzedni slajd | Spis treści | Następny slajd >>