Объект Бога

В объектно-ориентированном программировании объект Бога или класс Бога, а иногда и всезнающий или всезнающий объект, является анти-шаблоном, который ссылается на большое количество различных типов, имеет слишком много несвязанных или неклассифицированных методов или некоторую комбинацию того и другого.

Объект God является частью группы запахов кода, и это объект, который слишком много знает или слишком много делает.

Если ваш объект имеет следующие функции, то вы имеете дело с объектом бога:

  • Слишком много функций в классе
  • Слишком много знает о приложении и может взаимодействовать со всеми данными
  • Сложно поддерживать, потому что изменения обычно приводят к побочным эффектам.
  • Чрезвычайно сложный

Почему объект Бога является проблемой?

Вопреки принципам SOLID

Класс God имеет несколько обязанностей или содержит много классов, что противоречит единой ответственности, и его нелегко интегрировать с другой частью программы. Поскольку класс God отвечает за слишком многие из них, его необходимо часто обновлять, увеличивая изменения, которые ломают вносятся изменения.

Трудно отлаживать, расширять и поддерживать с течением времени

Он содержит загроможденный код, который трудно поддерживать, расширять, использовать, тестировать и интегрировать с другими частями приложения, что означает, что он снова соответствует стандарту связи. Сцепление — это связь между одним фрагментом кода и другим. Сведите его к минимуму. Если проблема возникает с одной частью, вам нужно будет отрегулировать каждую часть, которая соединена с ней. Разработчик может попасть в кроличью нору, пытаясь выяснить, какая связанная функция не была обновлена. Избегайте этой проблемы, поддерживая твердые принципы и рекомендации для своей команды. Таким образом, ваш код останется несвязанным и гибким для будущих изменений.

Ваш код хрупкий, его трудно читать и понимать.

Вернитесь к цитате Роберта Мартина. Ваша команда будет гораздо больше читать кодовую базу, чем писать в нее код. Поэтому, если код слишком сложен и неудобочитаем, он продолжит замедлять производственный процесс.

Как решить объект Бога

Подумайте, прежде чем вытягивать метод:

  • какими данными оперирует этот метод?
  • какова ответственность объекта?
  • Попробуйте реализовать интерфейс класса
  • Противоречит ли определение объекта принципам SOLID?

Модульный тест

  • Проверка правильности раздела кода
  • Отдельные независимые разделы кода
  • Сделать повторное использование кода более осуществимым
  • Тестирование шаблонов: Тестирование шаблонов — это метод, используемый в модульном тестировании, который пытается определить шаблоны, которые приводят к ошибкам в программном обеспечении.

Преобразуйте свой объект!

Рекомендации