我正在应用程序中实现一个干净的架构。我有一个层,其中应用程序/用例类执行业务逻辑并与多个传出端口(用于数据库调用、http api 调用等的适配器的接口)交互。用例将值/模型返回给 Web 控制器(将输出呈现给应用程序的用户)。
由于业务逻辑的复杂性,有许多悲伤的路径和快乐的路径(它们是具有不同状态的不同类型的对象),以及可以冒泡到 Web 控制器的异常。异常由具有通用 http 响应的错误处理程序处理并记录。
为了返回快乐和悲伤的路径,我将它包装在两个字段的对象中。但我觉得这是一种代码味道,因为我总是有一个字段返回 null。因此,在 web 控制器/servlet 中,对填充字段进行检查以确定正确的 http 响应。这是这样做的好方法吗?
我见过用例,返回快乐的路径,所有悲伤的路径都被赋予了特定的业务异常。此异常在 Web 控制器/servlet 中被捕获,并使用异常消息创建 http 响应。我觉得这也是一种代码味道,因为我们在 Web 控制器/servlet 中使用异常作为控制流。
我见过其他返回多个值的方法,例如
- 使用元组
- 返回一个对象,但每个字段都是一个列表,因此无需将 null 作为空字段,并使用空列表
- 使用地图
是否有任何其他方法可以返回多个值,而不使用空字段或使用异常(如上所述)?