Объект Бога
В объектно-ориентированном программировании объект Бога или класс Бога, а иногда и всезнающий или всезнающий объект, является анти-шаблоном, который ссылается на большое количество различных типов, имеет слишком много несвязанных или неклассифицированных методов или некоторую комбинацию того и другого.
Объект God является частью группы запахов кода, и это объект, который слишком много знает или слишком много делает.
Если ваш объект имеет следующие функции, то вы имеете дело с объектом бога:
- Слишком много функций в классе
- Слишком много знает о приложении и может взаимодействовать со всеми данными
- Сложно поддерживать, потому что изменения обычно приводят к побочным эффектам.
- Чрезвычайно сложный
Почему объект Бога является проблемой?
Вопреки принципам SOLID
Класс God имеет несколько обязанностей или содержит много классов, что противоречит единой ответственности, и его нелегко интегрировать с другой частью программы. Поскольку класс God отвечает за слишком многие из них, его необходимо часто обновлять, увеличивая изменения, которые ломают вносятся изменения.
Трудно отлаживать, расширять и поддерживать с течением времени
Он содержит загроможденный код, который трудно поддерживать, расширять, использовать, тестировать и интегрировать с другими частями приложения, что означает, что он снова соответствует стандарту связи. Сцепление — это связь между одним фрагментом кода и другим. Сведите его к минимуму. Если проблема возникает с одной частью, вам нужно будет отрегулировать каждую часть, которая соединена с ней. Разработчик может попасть в кроличью нору, пытаясь выяснить, какая связанная функция не была обновлена. Избегайте этой проблемы, поддерживая твердые принципы и рекомендации для своей команды. Таким образом, ваш код останется несвязанным и гибким для будущих изменений.
Ваш код хрупкий, его трудно читать и понимать.
Вернитесь к цитате Роберта Мартина. Ваша команда будет гораздо больше читать кодовую базу, чем писать в нее код. Поэтому, если код слишком сложен и неудобочитаем, он продолжит замедлять производственный процесс.
Как решить объект Бога
Подумайте, прежде чем вытягивать метод:
- какими данными оперирует этот метод?
- какова ответственность объекта?
- Попробуйте реализовать интерфейс класса
- Противоречит ли определение объекта принципам SOLID?
Модульный тест
- Проверка правильности раздела кода
- Отдельные независимые разделы кода
- Сделать повторное использование кода более осуществимым
- Тестирование шаблонов: Тестирование шаблонов — это метод, используемый в модульном тестировании, который пытается определить шаблоны, которые приводят к ошибкам в программном обеспечении.
Преобразуйте свой объект!