Я пытаюсь реорганизовать некоторый код «отправки по электронной почте», разделив шаги (проверка, присоединение связанного содержимого, форматирование, отправка) на отдельные классы, которые легче тестировать, регистрировать и обновлять.
В качестве части этого я должен выяснить, каким образом операции должны сообщать отправителю о проверке или временных ошибках («этот элемент был удален»), чтобы он мог запросить у пользователя дополнительную информацию или сообщить ему плохие новости. Вот путь, по которому идет нить (да, каракули)
"Controller"
. -> Outbox
. -> Validator
. -> Formatter
. -> Sender
. <-
-> Parameters, work in progress
<- Good, not so good, "you better sit down" news
То есть вы вдумчивый тип, между «возвращением», «исключениями» или «контекстом» ... какой из них делает вас счастливее?
A. Бросьте исключение в любую проблему и позвольте контроллеру разделить те, с которыми он может изящно справиться, и те, которые знают мой "звуковой сигнал".
B. Возвращает некоторый класс Result <T>
для переноса как результата операций (электронная почта), так и перечисленных результатов различных операций.
C. Передайте context во все этапы, где они могут указывать любые параметры, с которыми они не могут иметь дело, и сохраняйте сигнатуры метода очень простыми.
D. Сынок, ты слишком много думаешь об этом ... Вот что ты собираешься делать: <
YourSpecialJujuHere />
Спасибо за любой вклад, вы выступаете на концерте.