Z artykułu:
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 przeszukiwać różne źródła informacji, aby zrozumieć pojęcie.
Kod źródłowy jest odczytywany znacznie częściej niż jest zapisywany. Tak więc problem jo-jo, polegający na konieczności przełączania się między wieloma plikami jest problemem.
Jednak nie , problem jo-jo wydaje się o wiele bardziej istotny, gdy mamy do czynienia z głęboko zależnymi modułami lub klasami (które wzywają się do siebie nawzajem). To szczególny rodzaj koszmaru do przeczytania i prawdopodobnie to, co miał na myśli twórca problemu jo-jo.
Jednak - tak , ważne jest unikanie zbyt wielu warstw abstrakcji!
Wszystkie nietrywialne abstrakcje są do pewnego stopnia nieszczelne. - Prawo nieszczelnych abstrakcji.
Na przykład nie zgadzam się z założeniem poczynionym w odpowiedzi mmmaaa, że „ nie trzeba jo-jo, aby [(odwiedzić)] klasę ZipCode, aby zrozumieć klasę adresu”. Z mojego doświadczenia wynika, że to robisz - przynajmniej za pierwszym razem, gdy czytasz kod. Jednak, jak inni zauważyli, że są chwile, kiedy ZipCode
klasa jest właściwe.
YAGNI (Ya Ain't Gonna Need It) to lepszy wzorzec do naśladowania, aby uniknąć kodu Lasagna (kod ze zbyt wieloma warstwami) - abstrakcje, takie jak typy i klasy, są pomocne dla programisty i nie powinny być używane, chyba że są pomoc.
Osobiście staram się „zapisywać wiersze kodu” (i oczywiście powiązane „zapisywanie plików / modułów / klas” itp.). Jestem pewien, że są tacy, którzy zastosowaliby do mnie epitet „prymitywnej obsesji” - uważam, że ważniejsze jest posiadanie kodu, który można łatwo zrozumieć, niż martwić się etykietami, wzorami i anty-wzorami. Właściwy wybór, kiedy należy utworzyć funkcję, moduł / plik / klasę lub umieścić funkcję we wspólnej lokalizacji, jest bardzo sytuacyjny. Z grubsza celuję w 3-100 funkcji liniowych, 80-500 plików liniowych i „1, 2, n” w przypadku kodu biblioteki wielokrotnego użytku ( SLOC - bez komentarzy i schematu; zazwyczaj chcę co najmniej 1 dodatkowy SLOC minimum na linię obowiązkową płyta grzewcza).
Większość pozytywnych wzorców powstało od deweloperów, którzy robili to dokładnie wtedy , gdy ich potrzebowali . O wiele ważniejsze jest nauczenie się pisania czytelnego kodu niż próba zastosowania wzorców bez rozwiązania tego samego problemu. Każdy dobry programista może wdrożyć wzór fabryczny, nie widząc go wcześniej w rzadkim przypadku, gdy jest on odpowiedni dla ich problemu. Użyłem wzorca fabrycznego, wzorca obserwatora i prawdopodobnie setek innych, nie znając ich nazwy (tzn. Czy istnieje „wzorzec przypisania zmiennej”?). Dla zabawnego eksperymentu - zobacz, ile wzorców GoF jest wbudowanych w język JS - przestałem liczyć po około 12-15 w 2009 roku. Wzorzec Factory jest tak prosty, jak na przykład zwracanie obiektu z konstruktora JS - nie trzeba WidgetFactory.
Więc - tak , czasami ZipCode
jest to dobra klasa. Jednak nie , problem jo-jo nie jest ściśle istotny.