我在 sonarqube 中测试了以下方法,收到消息说重构此方法以将其认知复杂度从允许的 32 降低到 15

问题描述 投票:0回答:0

如何将下面的方法分开,将一个方法调用给另一个方法。

public static void dissociateRouteRecordsFromCreditApplication(List creditAppList,Map oldCAMap){ final String pendingSTR = 'Pending'; 设置 setOfCreditApplicationIdForNewCollateral = new Set(); 设置 setOfAppPurposesNewCollaterals = new Set(Label.appPurposeNewCollaterals.split(',')); 设置 setOfCreditApplicationIdForQIandILC = new Set(); 设置 setOfAppPurposesQI = new Set(Label.appPurposeQI.split(',')); 设置 setOfAppPurposesILC = new Set(Label.appPurposeILC.split(',')); 设置 setOfCreditApplicationIdsForScripts = new Set(); 设置 setOfAppPurposesScripts = new Set(Label.appPuporseScripts.split(',')); Map mapOfCreditAppIdToTypeOfQI = new Map(); Map mapOfCreditAppIdToTypeOfILC = new Map(); 列表 listOfDissociationRecordsToBeUpdated = new List();

for(LLC_BI__Product_Package__c creditApp : creditAppList){

        if(String.isNotBlank(creditApp.Status__c) &&
           pendingSTR.equalsIgnoreCase(creditApp.Status__c) &&
           creditApp.Application_Purpose__c !=(oldCAMap.get(creditApp.Id)).Application_Purpose__c &&
           setOfAppPurposesNewCollaterals.contains(creditApp.Application_Purpose__c)){
               setOfCreditApplicationIdForNewCollateral.add(creditApp.Id);
           }
      
        if(String.isNotBlank(creditApp.Status__c) &&
           pendingSTR.equalsIgnoreCase(creditApp.Status__c) &&
           creditApp.Application_Purpose__c !=(oldCAMap.get(creditApp.Id)).Application_Purpose__c &&
           setOfAppPurposesQI.contains(creditApp.Application_Purpose__c)){
               setOfCreditApplicationIdForQIandILC.add(creditApp.Id);
               mapOfCreditAppIdToTypeOfQI.put(creditApp.Id,'QI');
           }
        
        if(String.isNotBlank(creditApp.Status__c) &&
           pendingSTR.equalsIgnoreCase(creditApp.Status__c) &&
           creditApp.Application_Purpose__c !=(oldCAMap.get(creditApp.Id)).Application_Purpose__c &&
           setOfAppPurposesILC.contains(creditApp.Application_Purpose__c)){
               setOfCreditApplicationIdForQIandILC.add(creditApp.Id);
               mapOfCreditAppIdToTypeOfILC.put(creditApp.Id,'ILC');
           }
        
        if(String.isNotBlank(creditApp.Status__c) &&
           pendingSTR.equalsIgnoreCase(creditApp.Status__c) &&
           creditApp.Application_Purpose__c !=(oldCAMap.get(creditApp.Id)).Application_Purpose__c &&
           setOfAppPurposesScripts.contains(creditApp.Application_Purpose__c)){
               setOfCreditApplicationIdsForScripts.add(creditApp.Id);
           }
    }
    
    if(!setOfCreditApplicationIdForNewCollateral.isEmpty()){
        List<sObject> newCollateralRecordstobeUpdated = CG_CreditAppTriggerHandlerHelper.dissociateNewCollateralRecordsFromCreditApplication(setOfCreditApplicationIdForNewCollateral);
        if(NULL != newCollateralRecordstobeUpdated && !newCollateralRecordstobeUpdated.isEmpty()){
            listOfDissociationRecordsToBeUpdated.addAll(newCollateralRecordstobeUpdated);        
        }
    }
    if(!setOfCreditApplicationIdForQIandILC.isEmpty()){
        List<sObject> questionnaireRecordstobeUpdated = CG_CreditAppTriggerHandlerHelper.dissociateQuestionnaireRecordsFromCreditApplication(mapOfCreditAppIdToTypeOfQI,mapOfCreditAppIdToTypeOfILC,setOfCreditApplicationIdForQIandILC);
        if(NULL != questionnaireRecordstobeUpdated && !questionnaireRecordstobeUpdated.isEmpty()){
            listOfDissociationRecordsToBeUpdated.addAll(questionnaireRecordstobeUpdated);        
        }
    }
    if(!setOfCreditApplicationIdsForScripts.isEmpty()){
        List<sObject> connectionRecordstobeUpdated = CG_CreditAppTriggerHandlerHelper.dissociateScriptsFromCreditApplication(setOfCreditApplicationIdsForScripts);
        if(NULL != connectionRecordstobeUpdated && !connectionRecordstobeUpdated.isEmpty()){
            listOfDissociationRecordsToBeUpdated.addAll(connectionRecordstobeUpdated);        
        }
    }
    try{
        if(NULL!= listOfDissociationRecordsToBeUpdated && !listOfDissociationRecordsToBeUpdated.isEmpty()){
            Database.update(listOfDissociationRecordsToBeUpdated,FALSE);
        }
    }catch(exception e){
        System.debug('Exception-'+e);
        ATH_LogHandler.logException(e, 'CG_CreditAppTriggerHandler', 'dissociateRouteRecordsFromCreditApplication', 'CreditApplication');

} }

sonarqube salesforce apex-code salesforce-lightning
© www.soinside.com 2019 - 2024. All rights reserved.