Zpo-8-wyk-Slajd30: Różnice pomiędzy wersjami
Nie podano opisu zmian |
Nie podano opisu zmian |
||
Linia 1: | Linia 1: | ||
== | ==Duplicated Code== | ||
[[Image:zpo-8-wyk-Slajd30.PNG| | [[Image:zpo-8-wyk-Slajd30.PNG|Duplicated Code]] | ||
Najczęściej spotykanym problemem, który dotyczy niemal każdego systemu, jest duplikacja kodu. Badania wskazują, że średnio ok. 20-30% kodu to dokładne lub przybliżone duplikaty. Istotą duplikatów jest problem ze śledzeniem zmian: zwykle poprawki i aktualizacje są stosowane jedynie do jednej kopii, natomiast pozostałe – w zamyśle programisty zachowujące się identycznie jak pierwsza – pozostają niezmienione. To rodzi sporo trudnych do zlokalizowania błędów. | |||
Istotnym problemem jest wykrywanie duplikatów. Najprostsze metody posługują się jedynie zwykłym dopasowaniem tekstu, jednak ich skuteczność jest ograniczona. Bardziej zaawansowane dopuszczają przemianowania identyfikatorów, a nawet zmiany algorytmu. W niektórych przypadkach za duplikaty uznaje się także fragmenty nie identyczne, ale w dużym stopniu podobne. Ocena podobieństwa fragmentów kodu wymaga złożonych struktur danych i ma dużą złożoność obliczeniową. | |||
Sposób działania zależy od lokalizacji problemu. W przypadku pojedynczej klasy należy wyłączyć zduplikowany kod do wspólnej metody. W przypadku klas "bliźniaczych" przesunąć go do wspólnej nadklasy jako dziedziczoną metodę. W przypadku klas niespokrewnionych ze sobą możliwe jest m.in. utworzenie nowej klasy z duplikatami i odwoływanie się do niej lub jej instancji z dotychczasowych lokalizacji zduplikowanego kodu. | |||
[[zpo-8-wyk-Slajd29 | << Poprzedni slajd]] | [[zpo-8-wyk-toc|Spis treści ]] | [[zpo-8-wyk-Slajd31 | Następny slajd >>]] | [[zpo-8-wyk-Slajd29 | << Poprzedni slajd]] | [[zpo-8-wyk-toc|Spis treści ]] | [[zpo-8-wyk-Slajd31 | Następny slajd >>]] |
Aktualna wersja na dzień 18:14, 4 lis 2006
Duplicated Code
Najczęściej spotykanym problemem, który dotyczy niemal każdego systemu, jest duplikacja kodu. Badania wskazują, że średnio ok. 20-30% kodu to dokładne lub przybliżone duplikaty. Istotą duplikatów jest problem ze śledzeniem zmian: zwykle poprawki i aktualizacje są stosowane jedynie do jednej kopii, natomiast pozostałe – w zamyśle programisty zachowujące się identycznie jak pierwsza – pozostają niezmienione. To rodzi sporo trudnych do zlokalizowania błędów.
Istotnym problemem jest wykrywanie duplikatów. Najprostsze metody posługują się jedynie zwykłym dopasowaniem tekstu, jednak ich skuteczność jest ograniczona. Bardziej zaawansowane dopuszczają przemianowania identyfikatorów, a nawet zmiany algorytmu. W niektórych przypadkach za duplikaty uznaje się także fragmenty nie identyczne, ale w dużym stopniu podobne. Ocena podobieństwa fragmentów kodu wymaga złożonych struktur danych i ma dużą złożoność obliczeniową.
Sposób działania zależy od lokalizacji problemu. W przypadku pojedynczej klasy należy wyłączyć zduplikowany kod do wspólnej metody. W przypadku klas "bliźniaczych" przesunąć go do wspólnej nadklasy jako dziedziczoną metodę. W przypadku klas niespokrewnionych ze sobą możliwe jest m.in. utworzenie nowej klasy z duplikatami i odwoływanie się do niej lub jej instancji z dotychczasowych lokalizacji zduplikowanego kodu.