在MVC模式中,我们正在开发一个REST
应用程序。
服务层返回Optional<T>
,其中T可以是任何类。
因此,在REST
Controller
图层上有一个条件语句,用于测试结果是否为Optional.empty
,然后返回[]
,否则返回实际数据。
return ABCService.getById("").map(send actual data).orElse(Collections.empty());
在控制层上编写此代码是一种不好的做法吗?
我们将返回Optional<T>
,因为我们不想返回null
。如果我们不在控制图层上使用该条件,我们也必须删除从服务层返回的Optional
,我认为这不是一个好习惯。
有人可以解释为什么添加上面的代码不是一个好的做法,可能会有什么后果?
答案 0 :(得分:1)
控制器负责以他们应该提供的格式表示数据。它们不处理原始数据(通常由服务处理的提取/更新等操作),它们只是说明这些数据应该是什么样的。
因此,相信.map(send actual data)
没有做与业务逻辑层相关的任何事情,您的代码段是可以接受的。
剩下的另一个问题是如何正确编写处理该案例的方法。根据“清洁代码”,我建议编写两种方法(分别用于空数据和非空数据)。