Является ли хорошей практикой реализация шаблонного метода Pattern с помощью событий C #?
-
21-08-2019 - |
Вопрос
Сейчас я пытаюсь разобраться в некотором коде и нашел шаблон, который кажется мне немного странным.Существует пользовательский класс управления с событием 'EditorOpen'.Сначала я подумал, что это имя неправильное, потому что оно не заканчивается на "-ing" или "-ed", как предполагает MSDN.Однако позже я узнал, что это событие не ИНФОРМИРУЕТ о том, что что-то происходит, а скорее является своего рода ЗАПРОСОМ на выполнение фактической операции.Это клиентский код, который, как ожидается, выполнит "открытие редактора"!
Я был немного удивлен, узнав, что на самом деле это некая форма шаблона проектирования метода шаблона, в котором может быть несколько действий, связанных с одним заполнителем действия.
Я думаю, что это довольно интересно, но я также боюсь, что использование событий в таких случаях может ввести в заблуждение.В любом случае, мы здесь говорим не о СОБЫТИЯХ, а о ЗАПРОСАХ.Хм...может быть, все было бы в порядке, если бы только название события было "EditorOpeningRequest" или "EditorOpeningRequested".А ты как думаешь?Как бы вы прокомментировали это во время проверки кода?
Решение
Если у вас нет очень веской причины для того, чтобы несколько объектов обрабатывали запрос на открытие редактора, я бы предположил, что это должен быть делегат, а не событие.Это ограничивает вас наличием одного обработчика запроса, что в данном случае кажется более логичным.
Более того, я бы изменил название на openEditor, поскольку это более наглядно описывает то, чего вы собираетесь ожидать.Если вы действительно придерживаетесь модели событий, то OpenEditorRequested может быть лучшим названием.
ХТХ.