我正在研究一个将 RequestDTO 发送到 Web 服务的类。我需要在发送之前验证请求。
请求可以从 3 个不同的地方发送,每个“请求类型”有不同的验证规则,例如 request1 必须有姓名和电话号码,request2 必须有地址等)
我有一个 DTO,其中包含一长串字段(姓名、地址、城市、电话号码等),无论它是哪种类型的请求,它都是相同的 DTO。
我创建了 3 种不同的验证方法,并根据类型调用适当的方法。
在每种方法中,我都有一长串 if-else 来检查每种请求类型所需的字段。
private void validateRequest1(Request request) {
StringBuilder sb = new StringBuilder();
if (null == request) {
throw new IllegalArgumentException("Request is null");
}
if (isFieldEmpty(request.getName())) { *see below
sb.append("name,"));
}
if (isFieldEmpty(request.getStreet())) {
sb.append("street,"));
}
...
isFieldEmpty()
检查字符串是否为 nullisEmpty()
并返回一个布尔值
在其中一种方法中,这给了我 28 的圈复杂度,所以我的问题是.. 是否有可能降低这种复杂度?- 如果是这样,我将如何去做?
最终我需要检查很多字段,如果没有大量检查,我看不到如何做到这一点:/