Zpo-8-wyk-Slajd19: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Bwalter (dyskusja | edycje)
Nie podano opisu zmian
 
Bwalter (dyskusja | edycje)
Nie podano opisu zmian
 
Linia 1: Linia 1:
==Przykład(3)==
==Przykład: Inline Temp==


[[Image:zpo-8-wyk-Slajd19.PNG|Przykład(3)]]
[[Image:zpo-8-wyk-Slajd19.PNG|Przykład: Inline Temp]]




W tym kroku można usunąć stałe związane z typami z klasy źródłowej, przenosząc je do klas reprezentujących poszczególne stałe.
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

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.


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