Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Кіріспе
Бағдарламалық жасақтауда йо-йо проблемасы — бағдарламашының мұрагерлік графигі тым ұзақ және күрделі бағдарламаны оқып, түсінуге тырысқанда туындайтын анти-үлгі. Бағдарламаның басқару ағынын қадағалау үшін бағдарламашы көптеген әртүрлі сынып анықтамалары арасында жиі ауысуға мәжбүр болады. Бұл көбінесе объектіге бағытталған бағдарламалау контекстінде кездеседі. Бұл термин бағдарламашының назарының секіруін ойыншық йо-йоның жоғары-төмен қозғалысына теңеуден туындаған. Тэнзер, Ганти және Подар осы мәселені былай сипаттады: «Осы хабар ағаштарының бірін түсінуге тырысқанда, көбінесе йо-йомен серуендегендей сезінесіз». Объектіге бағытталған бағдарламалаудың көптеген тәжірибелері мұрагерлік графигін мүмкіндігінше жаппай ұстауға кеңес береді, ішінара осы мәселенің алдын алу үшін. Мұрагерлік орнына композицияны қолдану да жоғары бағаланады, бірақ бұл бағдарламашыдан бірнеше сынып анықтамаларын бір уақытта есте сақтауды талап етеді. Терең иерархия — кодтың нашарлығының белгісі және кодты қайта пайдалану үшін қосалқы жіктелудің көрінісі. Жалпы алғанда, йо-йо проблемасы — адамның бір түсінікті ұстау үшін әртүрлі ақпарат көздерін ауыстыруға мәжбүр болатын кез келген жағдайды да білдіре алады. Осы иерархияларды жалпы мінез-құлқына зиян келтірмей тегістеуге арналған бірнеше кодты қайта құру техникалары бар. Мұрагерлік иерархиясының қабаттарын құжаттау сияқты объектіге бағытталған жобалау техникалары осы мәселенің әсерін азайтуға көмектеседі, өйткені олар бағдарламашының түсінуі қажет ақпаратты бір жерде жинақтайды.
In software development, the yo yo problem is an anti pattern that occurs when a programmer has to read and understand a program whose inheritance graph is so long and complicated that the programmer has to keep flipping between many different class definitions in order to follow the control flow of the program. It is most often seen in the context of object oriented programming. The term comes from comparing the bouncing attention of the programmer to the up down movement of a toy yo yo. Taenzer, Ganti, and Podar described the problem by name, explaining: "Often we get the feeling of riding a yoyo when we try to understand one of these message trees." Most practices of object oriented programming recommend keeping the inheritance graph as shallow as possible, in part to avoid this problem. The use of composition instead of inheritance is also strongly preferred, although this still requires that a programmer keep multiple class definitions in mind at once. Deep hierarchies are a code smell and a symptom of sub classification for code reuse. More generally, the yo yo problem can also refer to any situation where a person must keep flipping between different sources of information in order to understand a concept. There are several code refactor techniques to flatten these hierarchies without compromising the overall behavior. Object oriented design techniques such as documenting layers of the inheritance hierarchy can reduce the effect of this problem, as they collect in one place the information that the programmer is required to understand.