Zpo-8-wyk-Slajd19: Różnice pomiędzy wersjami
Nie podano opisu zmian |
Nie podano opisu zmian |
||
Linia 1: | Linia 1: | ||
==Przykład | ==Przykład: Inline Temp== | ||
[[Image:zpo-8-wyk-Slajd19.PNG|Przykład | [[Image:zpo-8-wyk-Slajd19.PNG|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 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żenia 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. | |||
[[zpo-8-wyk-Slajd18 | << Poprzedni slajd]] | [[zpo-8-wyk-toc|Spis treści ]] | [[zpo-8-wyk-Slajd20 | Następny slajd >>]] | [[zpo-8-wyk-Slajd18 | << Poprzedni slajd]] | [[zpo-8-wyk-toc|Spis treści ]] | [[zpo-8-wyk-Slajd20 | Następny slajd >>]] |
Aktualna wersja na dzień 18:13, 4 lis 2006
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 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żenia 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.