Когда использовать паттерн Особый случай?
В книге Чистый код в главе Обработка ошибок, есть упоминание паттерна ОСОБЫЙ СЛУЧАЙ. Автор предлагает вместо возвращения NULL, выдать исключение, либо возвращать объект особого случая. Вопрос: если в проекте достаточно много проверок на null; Стоит ли абсолютно для каждого класса, делать подкласс с особым случаем? Не является ли это overengineering? Если нельзя так делать, то можно, пожалуйста, когда все таки стоит использовать данный паттерн, чтобы было эффективно
Ответы (1 шт):
Автор решения: Rainbow
→ Ссылка
Можешь орентироваться на следующие признаки:
- Часто встречающиеся проверки. Если в коде очень много мест, где выполняется проверка на null для определенного типа объекта, и этот код разбросан по различным частям системы, это может быть признаком того, что стоит ввести особый случай.
- Семантика. Если особый случай имеет четкую семантику в предметной области (например, пустой список, отсуствующий пользователь и т.д.), это может улучшить читаемость и понимание кода.
- Избавление от условных операторов. Если возвращаемый "особый" объект может успешно выполнить то же поведение, что и реальный объект, без необходимости проверки на null (или другой проверки), это может упростить и улучшить код.
Когда скорее всего не стоит использовать этот паттерн:
- Не всегда нужен особый объект. Если проверка на null встречается только в одном или двух местах, создание особого объекта может быть избыточным.
- Вычислительная стоимость. Создание и управление особыми объектами также имеет свою цену, особенно если они сложные или требуют дополнительных ресурсов. Поэтому создавать для каждого интерфейса особый случай, наверное, не очень хорошая идея.
- Понимание кода. Вводя в код особые объекты, мы можем увеличить сложность понимания кода. Либо просто запутать свой код. Поэтому здесь нужно взвешивать: принесёт ли это какую-то пользу? Сделает код проще или наоборот запутает его?