我试图通过将步骤(验证、附加相关内容、格式、发送)划分为可以更容易测试、记录和更新的单独类来重构一些“发送电子邮件”代码。
作为其中的一部分,我必须想办法让操作将验证或暂时错误(“该项目已删除”)传回发起者,以便它可以向用户询问更多信息或告诉他们坏消息. 这是线程采用的路径(是的,涂鸦)
"Controller"
. -> Outbox
. -> Validator
. -> Formatter
. -> Sender
. <-
-> Parameters, work in progress
<- Good, not so good, "you better sit down" news
所以你是一个深思熟虑的人,在“返回”、“例外”或“背景”之间……哪一个让你最开心?
A. 在任何问题上抛出异常,让控制器划分它可以优雅处理的和知道我的“蜂鸣器”的那些。
B.返回某种 Result
<T>
类来携带操作的产品(电子邮件)和各种操作的枚举结果。C. 将上下文传入/传出所有步骤,在这些步骤中可以指示他们无法处理的任何参数,并保持方法签名非常简单。
D. 儿子,你想多了。这就是你要做的事情:
<
YourSpecialJujuHere/>
感谢您的所有贡献,你们一起摇滚。