Java代码PMD抱怨Cyclomatic Complexity,20

Paw*_*wan 4 java performance pmd

当我在我的Java代码上运行PMD时,它显示的错误消息之一是"类STWeb具有20的循环复杂度".通常我的java类就是这样

public class STWeb implements STWebService {

  public String getData(RequestData request)
  {
    validate(request);
  }

  public boolean validate(Data[] formdata)
  {
    if(formdata.length==1)
    //do this 
    else if(formdata.length==3)
    //do this 
    else if(formdata.length==4)
    //do this 
    else if(formdata.length>4)
    //do this 
    else if(formdata.length==2)
    {
      if(formdata[0].getName.equals("OIY"))
      {
      }
    / And many more if else here 
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,根据我的业务需求,我需要使用许多if代码对类进行编码,如果是其他因此循环复杂性增加的原因,请告诉我什么是可行的方法按照标准?

Dec*_*eco 9

Cyclomatic Complexity测量不应用于质量控制,而应用作坏代码的指示/警告.您应该更多地关注它背后的代码,而不是CC本身的价值.

虽然您可以validate通过重构将方法分解为更小的方法来降低方法的复杂性,但是整个类仍然具有相同的CC.

只要代码是可读的并且对于必须查看它的下一个人有意义,那么拥有更高的CC应该不会那么重要.