В разработке программного обеспечения , то йо-йо проблема является анти-модель , которая возникает , когда программист должен читать и понимать программу , в которой наследовании графики настолько длинный и сложная , что программист должен держать листать между многими различными определениями классов для того , чтобы следовать поток управления программой. Это часто случается в объектно-ориентированном программировании . Этот термин происходит от сравнения подпрыгивающего внимания программиста с движением игрушечного йо-йо вверх-вниз . Тэнзер, Ганти и Подар описали проблему по имени, объяснив: «Часто мы чувствуем себя верхом на йойо, когда пытаемся понять одно из этих деревьев сообщений». [1]
Большинство практик объектно-ориентированного программирования рекомендуют сохранять граф наследования как можно более мелким, отчасти для того, чтобы избежать этой проблемы. Использование композиции вместо наследования также является настоятельно предпочтительным, хотя это по-прежнему требует, чтобы программист имел в виду сразу несколько определений классов.
Глубокие иерархии - это запах кода и признак подклассификации для повторного использования кода . [2]
В более общем плане проблема йо-йо может также относиться к любой ситуации, когда человек должен постоянно переключаться между различными источниками информации, чтобы понять концепцию.
Существует несколько методов рефакторинга кода , позволяющих сгладить эти иерархии без ущерба для общего поведения.
Методы объектно-ориентированного проектирования, такие как документирование слоев иерархии наследования, могут уменьшить влияние этой проблемы, поскольку они собирают в одном месте информацию, которую программист должен понимать.
Смотрите также
- Шаблоны проектирования § Введение, Глава 1
- Сложность Что означает сложность системы (любого вида)
- Hrair limit Предположение, что люди могут одновременно принимать не более семи концепций.
- Наследование реализации
- Семантика наследования
- Виртуальное наследование (объектно-ориентированное программирование)
- Кодовый запах
Рекомендации
- ^ Taenzer, Дэвид ; Ганти, Мурти; Подар, Сунил (1989). «Проблемы повторного использования объектно-ориентированного программного обеспечения» (PDF) . ECOOP 89: Труды Третьей европейской конференции по объектно-ориентированному программированию, 1989 . Издательство Кембриджского университета. С. 33–34 . Проверено 22 марта 2013 года .
- ^ «Обоняние кода 11 - подклассификация для повторного использования кода» . хэш-узел . Проверено 18 января 2021 года .