Кіріспе

Бағдарламалық жасақтауда йо-йо проблемасы — бағдарламашының мұрагерлік графигі тым ұзақ және күрделі бағдарламаны оқып, түсінуге тырысқанда туындайтын анти-үлгі. Бағдарламаның басқару ағынын қадағалау үшін бағдарламашы көптеген әртүрлі сынып анықтамалары арасында жиі ауысуға мәжбүр болады. Бұл көбінесе объектіге бағытталған бағдарламалау контекстінде кездеседі. Бұл термин бағдарламашының назарының секіруін ойыншық йо-йоның жоғары-төмен қозғалысына теңеуден туындаған. Тэнзер, Ганти және Подар осы мәселені былай сипаттады: «Осы хабар ағаштарының бірін түсінуге тырысқанда, көбінесе йо-йомен серуендегендей сезінесіз». Объектіге бағытталған бағдарламалаудың көптеген тәжірибелері мұрагерлік графигін мүмкіндігінше жаппай ұстауға кеңес береді, ішінара осы мәселенің алдын алу үшін. Мұрагерлік орнына композицияны қолдану да жоғары бағаланады, бірақ бұл бағдарламашыдан бірнеше сынып анықтамаларын бір уақытта есте сақтауды талап етеді. Терең иерархия — кодтың нашарлығының белгісі және кодты қайта пайдалану үшін қосалқы жіктелудің көрінісі. Жалпы алғанда, йо-йо проблемасы — адамның бір түсінікті ұстау үшін әртүрлі ақпарат көздерін ауыстыруға мәжбүр болатын кез келген жағдайды да білдіре алады. Осы иерархияларды жалпы мінез-құлқына зиян келтірмей тегістеуге арналған бірнеше кодты қайта құру техникалары бар. Мұрагерлік иерархиясының қабаттарын құжаттау сияқты объектіге бағытталған жобалау техникалары осы мәселенің әсерін азайтуға көмектеседі, өйткені олар бағдарламашының түсінуі қажет ақпаратты бір жерде жинақтайды.