Наследование. Бетонные классы. Повторное использование. Фантастическая смесь.

Проблемы

Решения

  1. Подклассы должны быть специализациями.
  2. Рефакторинг иерархий.
  3. Благосклонность композиции.
  4. Классы листьев должны быть конкретными.
  5. Не листовые классы должны быть абстрактными.

Образец кода

Неправильный

Правильно

Обнаружение

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

В абстрактных классах должно быть несколько конкретных методов. Мы можем проверить заранее установленный порог для правонарушителей.

Теги

  • Сочинение

Вывод

Случайная подклассификация - первое очевидное преимущество молодых разработчиков.

Более зрелые люди вместо этого находят возможности для композиции.

Композиция является динамической, множественной, подключаемой, более тестируемой, более поддерживаемой и менее связанной, чем наследование.

Подклассифицируйте объект только в том случае, если он следует отношениям ведет себя как.

После разделения на подклассы родительский класс должен быть абстрактным.

связи



Больше информации



Программное обеспечение - это газ; он расширяется, чтобы заполнить свой контейнер.

Натан Мирвольд



Эта статья является частью серии CodeSmell.