Dall'articolo:
Più in generale, il problema yo-yo può anche riferirsi a qualsiasi situazione in cui una persona deve continuare a alternare tra diverse fonti di informazioni per comprendere un concetto.
Il codice sorgente viene letto molto più spesso di quanto sia scritto. Pertanto, il problema yo-yo, di dover passare da un file all'altro è una preoccupazione.
Tuttavia, no , il problema yo-yo sembra molto più rilevante quando si ha a che fare con moduli o classi profondamente interdipendenti (che si richiamano tra loro). Questi sono un tipo speciale di incubo da leggere, ed è probabilmente ciò che il direttore del problema yo-yo aveva in mente.
Tuttavia - sì , evitare troppi strati di astrazione è importante!
Tutte le astrazioni non banali, in una certa misura, presentano delle perdite. - la Legge delle Astrazioni Perdenti.
Ad esempio, non sono d'accordo con l'ipotesi fatta nella risposta di mmmaaa secondo cui " non è necessario yo-yo per [(visitare)] la classe ZipCode per comprendere la classe Address". La mia esperienza è stata che lo fai - almeno le prime volte che leggi il codice. Tuttavia, come altri hanno notato, ci sono momenti in cui una ZipCode
classe è appropriata.
YAGNI (Ya A't Not Gonna Need It) è un modello migliore da seguire per evitare il codice Lasagna (codice con troppi livelli) - astrazioni, come tipi e classi, sono lì per aiutare il programmatore e non dovrebbero essere usate a meno che non lo siano un aiuto.
Personalmente mi propongo di "salvare righe di codice" (e ovviamente i relativi "salva file / moduli / classi", ecc.). Sono fiducioso che ci siano alcuni che potrebbero applicare a me l'epiteto di "ossessionato primitivo" - trovo più importante avere un codice di cui sia facile ragionare piuttosto che preoccuparsi di etichette, schemi e anti-schemi. La scelta corretta di quando creare una funzione, un modulo / file / classe o inserire una funzione in una posizione comune è molto situazionale. Mi riferisco all'incirca a 3-100 funzioni di linea, 80-500 file di riga e "1, 2, n" per il codice libreria riutilizzabile ( SLOC - esclusi commenti o targhetta della caldaia ; in genere desidero almeno 1 SLOC minimo aggiuntivo per riga di obbligatorio boilerplate).
La maggior parte dei modelli positivi sono nati dagli sviluppatori facendo esattamente questo, quando ne avevano bisogno . È molto più importante imparare a scrivere codice leggibile che cercare di applicare schemi senza lo stesso problema da risolvere. Qualsiasi buon sviluppatore può implementare il modello di fabbrica senza averlo mai visto prima nel caso insolito in cui si adatta perfettamente al loro problema. Ho usato il modello di fabbrica, il modello di osservatore e probabilmente anche centinaia, senza conoscerne il nome (ovvero, esiste un "modello di assegnazione variabile"?). Per un esperimento divertente - vedi quanti schemi GoF sono integrati nel linguaggio JS - Ho smesso di contare dopo circa 12-15 nel 2009. Il modello Factory è semplice come restituire un oggetto da un costruttore JS, ad esempio - non è necessario una WidgetFactory.
Quindi - sì , a volte ZipCode
è una buona classe. Tuttavia, no , il problema yo-yo non è strettamente pertinente.