TL;DR: Trust your collaborators. Don't check who they are. Ask them to do it instead.
Проблемы
- "Связь"
- Интерференция метамодели
- ИФ
Решения
- Избегайте
is
,as
,::class
,::class.java
и т. д. - Не используйте рефлексию и метапрограммирование для объектов предметной области.
- Замените IFs на полиморфизм.
- Используйте полные объекты, избегайте нулей и сеттеров, отдавайте предпочтение неизменяемости, и у вас никогда не будет если.
Образец кода
Неправильный
Верно
Заключение
Тестирование на тип класса связывает объекты со случайными решениями и нарушает биекцию, поскольку такого контроля в реальном мире не существует. Это запах наших моделей недостаточно хорош.
Кредиты
Первоначально опубликовано на https://yonatankarp.com.