当前位置: 首页 > 知识库问答 >
问题:

重构方法降低开关情况下的认知复杂度

傅泉
2023-03-14
private void addSth(List<Integer> myStatus, List<String> myId, String taskOwner, StringBuilder queryStatement, List<Object> args) {
        
        if (null != myStatus&& myStatus.size >0) {
             queryStatement.append("and (");
        for(int i = 1; i <= status.size(); i++) {
          int status = myStatus.get(i-1);
    
           switch (status) {
            case 1:
             StringBuilder potSth = new StringBuilder();
             if (null != myId && myId.size() > 0) {
             pothSth.append("(");
    
           for (int j=1; j <= myId.size(); j++) 
               pothSth.append(" ? ");
          if (j < myId.size()) 
              pothSth.append(", ")
                
           
           pothSth.append(")");
             
          
          queryStatement.append("sth");
          queryStatement.append(pothSth);
         queryStatement.append(")\n");

         args.add(1);
        
        for (String pOwner : ownerId) {
          args.add(pOwner);
          
     break;

     case 2:
     case 3:
         queryStatement.append("or ");
       args.add(status);
       args.add(taskOwner);
     

  if (i < myStatus.size ) {
  queryStatement.append("or ");
 
   

共有1个答案

史良哲
2023-03-14

Sonarlint基于三个因素测量认知复杂性:

  1. 忽略允许将多个语句易读地短化为一个语句的结构。
  2. 代码线性流中的每个中断增量(加一)。
  3. 嵌套断流结构时的增量。

资料来源:《认知复杂性白皮书》第4页

 类似资料: