2017-03-09 1 views
1

코드를 리팩터링 할 때 코드 복잡성, 품질 및 중복을 검사하는 모범 사례를 따르기 위해 SonarQube, SonarRunner, JSHint를 사용하고 있습니다.간단한 else if 루프의 경우 AngularJs의 순환 복잡성

정상적인 경우 else if 루프는 15에서 20 사이의 어딘가에 있습니다. 10 이하로 줄여야합니다.

if(..condition..){ 

}else if(..condition..){ 

}else if(..condition..){ 

} 

나는 약 15-20 조건을 가지고 있습니다. 어떤 방법으로 복잡성을 줄일 수 있습니까?

+0

코드에 20 개의 if/else 케이스가있는 경우 솔직히 틀리게 생각하고 있습니다. – Marko

답변

0

상황에 따라 다릅니다. 당신이

if(object.color === 'red'){ 
    runApple(); 
} else if (object.isRound){ 
    runApple(); 
} else if(object.isTasty){ 
    runApple(); 
} 

같은 비즈니스 로직을 반복 한 경우 실행되는 비즈니스 로직 그러나 완전히 다른 경우에 당신은 당신이 시도하고 그룹의 모든 조건문으로 할 수있는 것보다,

function isApple(object){ 
    return object.color === "red" || object.isRound || object.isTasty; 
} 

if(isApple(object){ 
    runApple(); 
} 

에 모든 것을 리팩토링 수 있습니다 어떤 종류의 기능

예.

function isCondition1_2or3(){ 
    return isCondition1() || isCondition2() || isCondition3(); 
} 

function exectue1_2or3(){ 
    if(isCondition1()){ 
    execute1(); 
    } else if (isCondition2()){ 
    execute2(); 
... 
} 

는 새 기능을 사용하기 위해 많은 기능을 리팩토링 것

if(isCondition1_2_or3()){ 
    execute1_2_or3() 
} else if (... 
의 핵심은 앞의 예에서와 같이 다른 조건을 나타내는 비즈니스 도메인의 자연 그룹의 어떤 종류를 찾을 수 있습니다

개체가 빨간색이거나 둥글거나 맛있는 개체가 사과라는 것을 의미합니다.

그러나 실제로 다른 조건을 나타내는 자연적인 그룹이없는 경우. 순환 기능의 복잡성 검사기에 단순히 큰 기능을 무시하는 것이 더 쉬울 것입니다.

관련 문제