Tag: 圈复杂度

如何降低圈复杂度?

我正在开发一个将RequestDTO发送到Web服务的类。 我需要在发送之前validation请求。 请求可以从3个不同的地方发送,每个“请求类型”有不同的validation规则,例如request1必须有名称和phonenumber,request2必须有地址,等等) 我有一个DTO,其中包含很长的字段列表(名称,地址,城市,电话号码等),无论是哪种类型的请求都是相同的DTO。 我创建了3种不同的validation方法,并根据类型调用适当的方法。 在每个方法中,我都有一长串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的圈复杂度,所以我的问题是……是否有可能降低这种复杂性? – 如果是的话,我该怎么做呢? 最终我需要检查很多字段,如果没有大量的检查,我无法看到如何做到这一点:/

如何降低Cyclomatic Complexity?

我有一个接收Object的方法,并根据它检测到的对象类型做一些事情: void receive(Object object) { if (object instanceof ObjectTypeA) { doSomethingA(); } else { if (object instanceof ObjectTypeB) { doSomethingB(); } else { if (object instanceof ObjectTypeC) { doSomethingC(); } else { if (object instanceof ObjectTypeD) { doSomethingD(); } else { // etc… } } } } } 如何降低Cyclomatic Complexity? 我四处搜寻但找不到任何有用的东西。