Создание абстракции только для обработки исключений - паттерн или антипаттерн?

Создание абстракции только для обработки исключений - паттерн или антипаттерн?
Создание абстракции только для обработки исключений - паттерн или антипаттерн? - plhnk @ Unsplash

шаблон тода.

ExceptionHandlingController, как показано на рисунке, не является объектом-богом. Он может им стать, но в настоящее время я вижу там только одну функциональность и никаких ссылок на "множество несвязанных типов". Этот пример маршрутизации всех исключений в журнал не является анти-паттерном, наоборот, это пример для хорошо известного паттерна GoF - Шаблон Me

имеет четкую и полезную цель (передача исключений в журнал единообразным и DRY способом). Это также не полтергейст, так как это

в вашем примере это сам abstract class Controller, в таком (пустом) виде он является ненужной абстракцией. Я бы, наверное, удалил этот класс и переименовал ExceptionHandlingController в Controller. В случае, если Controller является частью фреймворка, не думайте об этом слишком много, этот дополнительный слой на самом деле не вредит, и Controller, вероятно, не так пуст, как кажется в вашем вопросе. Единственный полтергейст, который я могу заметить

erived контроллер должен вызывать дополнительную функцию callWithExceptionHandling, и каждый dev, использующий его, не должен забывать это делать. Однако, возможно, это то, чего вы хотите - одни контроллеры передают свои исключения в журнал, другие - нет. В таком случае, продолжайте. Что касается вашей функции расширения: когда вы явно хотите, чтобы каждый контроллер помещал исключения в журнал, это решение может быть ошибочным, каждый новый контроллер будет помещать исключения в журнал.

Прикрепляю к посту несколько видео по теме:

Прикрепленное видео 1 - JavaScript Паттерны. Шаблоны проектирования. 17 Примеров

Прикрепленное видео 2 - Денис Цветцих "Repository и UnitOfWork в 2020 году, must have или антипаттерн?"

Прикрепленное видео 3 - Python. Паттерны. Утиная типизация. Итераторы. Генераторы. Декораторы


LetsCodeIt, 10 марта 2023 г., 22:42