중첩된 IF/ELSE 조건을 정리하는 2가지 간단한 팁

if/else 조건이 다음과 같은 경우가 있을 수 있습니다.

if(age>0){
    if(age < 18){
        return "Not an Adult"
    }
    else if (age >= 18 && age<60){
        return "An Adult"
    }
    else{
        return "Senior Citizen"
    }
}
else{
    return "Age must be a valid number"
}


그러나 이것은 간단한 예이며 코드 논리가 복잡해짐에 따라 지저분해질 수 있습니다.

더 추가하려면 다중 중첩 if/else가 증가하고Cyclomatic complexity 가능하면 피하는 것이 좋습니다.

Cyclomatic complexity is a software metric used to indicate the complexity of a program. It is a quantitative measure of the number of linearly independent paths through a program's source code. Thomas J. McCabe, Sr.



그래서 그것을 피하기 위해 무엇을 할 수 있습니까? 간단합니다. 다음 팁을 사용하여 달성 가능한 if/else 조건의 분기 수를 줄이십시오.


  • 보호 조항
  • 삼항 연산자

  • Switch 문, 사전, 점프 테이블 등과 같은 다른 것들이 있지만 이 문서의 범위를 벗어납니다.

    1. 보호 조항



    간단히 말해서 조건이 충족되지 않으면 일찍 돌아가십시오. 다시 이전 코드를 사용하여 다음과 같이 수정할 수 있습니다.

    // Guard clause
    if(age <= 0){
        return "Age must be a valid number" 
    }
    
    if(age < 18){
        return "Not an Adult"
    }
    else if (age < 60){
        return "An Adult"
    }
    
    return "Senior Citizen"
    


    아니면 이렇게 할 수도 있습니다.

    // Guard clause
    if(age <= 0) return "Age must be a valid number"
    
    if (age < 18) return "Not an Adult"
    else if (age < 60)  return "An Adult"
    else return "Senior Citizen"
    


    대괄호를 사용하거나 사용하지 않고 코드 정리에만 범위를 지정합니다.

    2. 삼항 연산자



    여러분 대부분은 이미 사용하고 있지만 어쨌든 그렇습니다. 마지막 코드 수정

    if(age <= 0) return "Age must be a valid number"
    
    var res = (age < 18 ? "Not an Adult" 
            : (age < 60) ? "An Adult" 
            : "Senior Citizen")
    
    return res
    


    또는

    if(age <= 0) return "Age must be a valid number"
    
    return (age < 18 ? "Not an Adult" : (age < 60) ? "An Adult" : "Senior Citizen")
    



    면책 조항: 클린 코드가 항상 성능 코드 또는 단순 코드를 의미하는 것은 아닙니다. 때로는 둘 중 하나를 결정해야 합니다. 그러나 코드를 얼마나 깔끔하게 만들 수 있는지에는 한계가 있습니다.


    네스팅을 청소하기 위해 다른 방법을 사용합니까? 댓글로 꼭 말씀해주세요.

    좋은 웹페이지 즐겨찾기