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