在控制层编写决策语句

Writing decision statements on control layer

在 MVC 模式中,我们正在开发一个 REST 应用程序。

服务层 returning Optional<T> 其中 T 可以是任何 class.

所以在 REST Controller 层上有一个条件语句,它测试结果是否为 Optional.empty then return [] else return实际数据。

return ABCService.getById("").map(send actual data).orElse(Collections.empty());

把这段代码写在控制层上是一种不好的做法??

我们正在 returning Optional<T> 因为我们不想 return null。如果我们不在控制层上使用该条件,我们也必须从服务层中删除 Optional returning,我认为这不是一个好的做法。

有人可以解释为什么添加上面的代码不是一个好的做法,会产生什么后果??

控制器负责以它们应该提供的格式表示数据。他们不处理原始数据(像 fetching/updating 这样的操作通常由服务处理),他们只是告诉这些数据应该是什么样子。

因此,相信 .map(send actual data) 没有做任何与业务逻辑层相关的事情,您的代码片段是可以接受的。

剩下的另一个问题是如何正确编写处理该案例的方法。根据"Clean Code",我建议写两个方法(分别针对空数据和非空数据)。