중첩된 IF/ELSE 조건을 정리하는 2가지 간단한 팁
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")
면책 조항: 클린 코드가 항상 성능 코드 또는 단순 코드를 의미하는 것은 아닙니다. 때로는 둘 중 하나를 결정해야 합니다. 그러나 코드를 얼마나 깔끔하게 만들 수 있는지에는 한계가 있습니다.
네스팅을 청소하기 위해 다른 방법을 사용합니까? 댓글로 꼭 말씀해주세요.
Reference
이 문제에 관하여(중첩된 IF/ELSE 조건을 정리하는 2가지 간단한 팁), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/rhuzaifa/2-simple-tips-to-clean-nested-if-else-conditions-2kn4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)