Problem jojo - Yo-yo problem
W rozwoju oprogramowania , yo-yo problemem jest anty-wzorzec , który występuje, gdy programista musi przeczytać i zrozumieć program, którego dziedziczenie wykres jest tak długa i skomplikowana, że programista musi zachować skakaniu pomiędzy wiele różnych definicji klas w celu odbycia przepływ sterowania programem. Najczęściej widziany jest w kontekście programowania obiektowego . Termin pochodzi z porównania odbijającej się uwagi programisty do ruchu w górę w dół zabawki jo-jo . Taenzer, Ganti i Podar opisali problem po imieniu, wyjaśniając: „Często mamy wrażenie jazdy na jojo, kiedy próbujemy zrozumieć jedno z tych drzew wiadomości”.
Większość praktyk programowania obiektowego zaleca utrzymywanie grafu dziedziczenia tak płytkie, jak to możliwe, po części w celu uniknięcia tego problemu. Użycie kompozycji zamiast dziedziczenia jest również bardzo preferowane, chociaż nadal wymaga to od programisty pamiętania o wielu definicjach klas jednocześnie.
Głębokie hierarchie to zapach kodu i symptom podklasyfikacji do ponownego użycia kodu .
Mówiąc bardziej ogólnie, problem jo-jo może również odnosić się do każdej sytuacji, w której dana osoba musi ciągle przełączać się między różnymi źródłami informacji, aby zrozumieć pojęcie.
Istnieje kilka technik refaktoryzacji kodu , które spłaszczają te hierarchie bez narażania ogólnego zachowania.
Techniki projektowania zorientowanego obiektowo, takie jak warstwy dokumentujące hierarchię dziedziczenia, mogą zmniejszyć efekt tego problemu, ponieważ gromadzą w jednym miejscu informacje, które programista musi zrozumieć.
Zobacz też
- Wzorce projektowe § Wprowadzenie, rozdział 1
- Złożoność Co to znaczy, że system (dowolnego rodzaju) jest złożony
- Limit Hair Sugestia, że ludzie mogą jednocześnie bawić się co najwyżej w około siedem koncepcji
- Dziedziczenie wdrożeniowe
- Semantyka dziedziczenia
- Dziedziczenie wirtualne (programowanie obiektowe)
- Kod Zapach