如何降低环状复杂性?
2022-09-01 07:37:32
我正在研究一个将 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()
检查字符串是否为 null,并返回一个布尔值isEmpty()
这给了我其中一种方法的28的循环复杂性,所以我的问题是。是否有可能降低这种复杂性?- 如果是这样,我该怎么做?
最终,我需要检查很多字段,如果没有大量检查,我就无法看到如何做到这一点:/