我正在开发一个向Web服务发送RequestDTO的类。我需要在发送之前验证请求。如何降低圈复杂度?
该请求可以从3个不同的地方发送,并且对于每个“请求类型”有不同的验证规则,例如, request1必须有名称和PhoneNumber,请求2必须有地址等)
我有一个DTO包含的字段(名称,地址,城市,PHONENUMBER等一长串),它是同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()
检查字符串空和isEmpty()
并返回boolean
这给我的28这些方法之一圈复杂,所以我的问题是..是有可能降低这种复杂性? - 如果是这样,我会怎么做呢?
最后,我需要检查很多领域,我看不出这可以在没有大量的检查来完成:/
我的想法是:使用某种封装空白(或其他)检查以及要采取的动作('sb.append()')等的'FieldChecker'对象,并遍历这样的对象。这使得代码更清晰,因为您必须明确定义该检查的输出和输入。 – millimoose 2013-05-07 11:41:51