Zpo-5-wyk-Slajd30

Z Studia Informatyczne
Wersja z dnia 06:50, 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

Duplicated Code

Duplicated Code


Najpopularniejszym 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.


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