기능의 인지 복잡성을 줄이는 방법은 무엇입니까?
JavaScript/TypeScript의 인지적 복잡성은 Visual Studio Code의 SonarLint 확장을 사용하여 평가할 수 있습니다.
함수의 인지적 복잡성을 줄이기 위해 개발자는 여러 문을 하나로 축소하는 약어를 사용하여 코드를 단순화해야 합니다.
인지 복잡성을 줄이는 방법
1. 반복되는 Code/nested if else를 별도의 기능으로 이동
Nest if else 조건을 단순화하기 위해 반복되는 코드를 별도의 함수로 옮길 수 있습니다. 중첩 조건을 별도의 함수로 옮길 수도 있습니다.
complexFunction(){
if(condition1){
if(condition2){
}
else{
}
}
else{
}
}
//We can move the nest if to a separate function
complexFunction(){
if(condition1){
this.anotherFunction()
}
else{
}
}
anotherFunction(){
if(condition2){
}
else{
}
}
2. 삼항 연산자 사용
조건이 2개인 경우 if-else 루프 대신 삼항 연산자를 사용하십시오.
checkCondition(){
if(condition){
return true
}
else{
return false
}
}
//Ternary operator for the above if else condition
checkCondition(){
return condition? true: false
}
3. 항상 참 또는 거짓 조건에 대한 if-else 루프를 피하십시오.
이것은 많은 초보 개발자들이 저지르는 실수 중 하나입니다. if else 루프는 항상 상수 부울 값(true 또는 false)을 반환하는 문에 대해 사용하지 마십시오.
4. if else 루프에서 여러 'or' 조건 대신 Array.includes() 사용
모든 조건을 배열로 변환한 다음
.includes()
를 사용합니다.//condition with multiple 'or' conditions
if(fruit === 'apple' || fruit === 'mango'){}
//convert to array to use includes
const fruitList = ['apple', 'mango']
if(fruitList.includes(fruit)){}
5. 선택적 연결
우리는
?.
를 사용하여 if 검사 대신 개체 체인 깊숙이 위치한 속성의 오류를 방지합니다.const car= {
manufacturer: 'Ford',
model: {
year: 2012,
color: 'Red'
}
};
const carName = car.specs.warranty;
// this will break the code as specs is undefined
const carName = car.specs?.warranty;
// this will output undefined
6. 선택자 연산자를 사용하여 기본값 설정
변수의 기본값을 설정하기 위해 선택기 연산자
||
를 사용할 수 있습니다. variable = variable || 'default value'
// this will return default value if variable is false
(null or undefined).
Reference
이 문제에 관하여(기능의 인지 복잡성을 줄이는 방법은 무엇입니까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/hardiquedasore/how-to-reduce-cognitive-complexity-of-a-function-33jl텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)