Бог возражает
Эта статья включает список общих ссылок , но в ней отсутствуют достаточные соответствующие встроенные цитаты . ( Март 2012 г. ) |
В объектно-ориентированном программировании объект -бог (иногда также называемый всеведущим или всезнающим объектом ) — это объект , который ссылается на большое количество различных типов, имеет слишком много несвязанных или неклассифицированных методов или некоторую комбинацию того и другого. [1] Объект god — это пример антишаблона и запаха кода . [2]
Характеристики
[ редактировать ]Распространенный метод программирования — разделить большую проблему на несколько более мелких ( стратегия «разделяй и властвуй» ) и создать решения для каждой из них. Как только мелкие проблемы решены, большая проблема в целом решена. Поэтому данному объекту для небольшой задачи нужно знать только о себе. Аналогично, существует только один набор проблем, которые объект должен решить: свои собственные проблемы. Это также соответствует принципу единой ответственности .
Напротив, программа, использующая объект бога, не следует этому подходу. Большая часть общей функциональности такой программы закодирована в одном «всезнающем» объекте, который хранит большую часть информации обо всей программе, а также предоставляет большинство методов для манипулирования этими данными. Поскольку этот объект содержит так много данных и требует так много методов, его роль в программе становится богоподобной (всезнающей и всеохватывающей). Вместо того, чтобы объекты программы напрямую общались между собой, другие объекты внутри программы полагаются на один объект-бог для получения большей части своей информации и взаимодействия. Поскольку этот объект тесно связан с большей частью остального кода (ссылается на него), его обслуживание становится более трудным, чем при более равномерно разделенном дизайне программирования. Изменения, внесенные в объект в интересах одной процедуры, могут иметь волновой эффект на другие несвязанные функции.
Объект-бог — это объектно-ориентированный аналог отсутствия использования подпрограмм в процедурных языках программирования или использования слишком большого количества глобальных переменных для хранения информации о состоянии .
Хотя создание объекта-бога обычно считается плохой практикой программирования, этот метод иногда используется для ограниченных сред программирования (таких как микроконтроллеры ), где повышение производительности и централизация управления более важны, чем удобство сопровождения и элегантность программирования.
См. также
[ редактировать ]- Код равиоли – обратная картина
Ссылки
[ редактировать ]- ^ Риэль, Артур Дж. (1996). «Глава 3: Топологии ориентированных на действие и объектно-ориентированных приложений». Эвристика объектно-ориентированного проектирования . Бостон, Массачусетс: Аддисон-Уэсли. ISBN 0-201-63385-Х .
3.2: Не создавайте в своей системе божественные классы/объекты. Будьте очень подозрительны к абстракции, имя которой содержит Драйвер, Менеджер, Система или Подсистема.
- ^ Контьери, Максимилиано (28 ноября 2020 г.). «Код запаха 14 — Объекты Бога» . Середина . Проверено 6 марта 2023 г.