Наследование. Бетонные классы. Повторное использование. Фантастическая смесь.
Проблемы
- Плохие модели
- Связь
- Замена Лискова Нарушение
- Переопределение метода
- Картограф вина
Решения
- Подклассы должны быть специализациями.
- Рефакторинг иерархий.
- Благосклонность композиции.
- Классы листьев должны быть конкретными.
- Не листовые классы должны быть абстрактными.
Образец кода
Неправильный
Правильно
Обнаружение
Отмена конкретного метода - явный запах. Мы можем обеспечить соблюдение этих политик на большинстве линтеров.
В абстрактных классах должно быть несколько конкретных методов. Мы можем проверить заранее установленный порог для правонарушителей.
Теги
- Сочинение
Вывод
Случайная подклассификация - первое очевидное преимущество молодых разработчиков.
Более зрелые люди вместо этого находят возможности для композиции.
Композиция является динамической, множественной, подключаемой, более тестируемой, более поддерживаемой и менее связанной, чем наследование.
Подклассифицируйте объект только в том случае, если он следует отношениям ведет себя как.
После разделения на подклассы родительский класс должен быть абстрактным.
связи
Больше информации
Программное обеспечение - это газ; он расширяется, чтобы заполнить свой контейнер.
Натан Мирвольд
Эта статья является частью серии CodeSmell.