Java 代码 PMD 提示圈复杂度,共 20

标签 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 
    }
  }
}

如您所见,根据我的业务需求,我需要编写类(class)代码 有很多 if 和 if else 所以环复杂度增加的原因,请告诉我 根据这个标准,什么是可行的方法??

最佳答案

圈复杂度测量不应用于质量控制,而应作为错误代码的指示器/警告。您应该更多地关注其背后的代码,而不是 CC 本身的值(value)。

虽然您可以通过重构将 validate 方法拆分为更小的方法来降低它的复杂性,但作为一个整体的类仍将具有相同的 CC。

只要代码可读并且对下一个必须查看它的人来说有意义,那么拥有更高的 CC 就不会那么重要。

关于Java 代码 PMD 提示圈复杂度,共 20,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8089125/

相关文章:

javascript - 预加载/加载大图像的最快方法

c++ - Fast Delegate (et al) 背后的想法是否已用于优化 std::function?

java - 验证/验证 Google Play 游戏服务 ID?

sql-server - 在 JOIN 中使用时,带有 Containstable 的 Sql 服务器全文搜索非常慢!

java - 从数据库填充 DefaultMutableTreeNode

java - PMD故障: ILogin:73 Rule:ConstantsInInterface Priority:3 Avoid constants in interfaces

java - 如何排除要 checkin PMD maven pom.xml 文件的文件?

java - PMD 规则集未通过 MAVEN 下载/更新

java - 防止 arraylist 中的重复条目

java - W/System.err : org. json.JSONException : Value [] at 0 of type org. json.JSONArray 无法转换为 JSONObject