在控制层编写决策语句
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",我建议写两个方法(分别针对空数据和非空数据)。
在 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",我建议写两个方法(分别针对空数据和非空数据)。