😎 Clean Code 원칙의 이해
Clean Code는 가독성, 재사용성, 유지보수의 용이성에 초점을 맞춘 코드 작성 방법론이다. Robert C. Martin은 이를 위한 다양한 원칙을 제시하였는데, 그 중 '제어문의 복잡성을 줄이는 것'이 하나로, 이 원칙에 따르면 if문에서 else와 else if문을 최대한 지양하도록 권장한다. 이 원칙의 배경에는 어떤 이유가 있는지 살펴보자.
✅ if문에서 else와 else if문 사용의 문제점
if문에 else와 else if문을 사용하게 되면, 코드의 복잡성이 증가하는 문제가 있다. 특히 여러 조건이 복합적으로 얽혀있는 경우, 코드의 가독성이 저하되며 디버깅의 어려움이 생긴다. 또한, 이러한 구조는 코드의 흐름을 파악하기 어렵게 만들어 실수를 유발하는 원인이 된다.
✅ else와 else if문 사용의 필요성 및 리팩토링 전략 (1. 조건이 적은 경우)
그러나 모든 상황에서 else와 else if문을 지양하는 것은 현실적으로 어렵다. 특정 조건에 따라 다른 동작을 수행해야 하는 경우, 이들을 사용하는 것이 필요하다. 이런 상황에서는 다음과 같은 리팩토링 전략을 사용하여 문제를 해결할 수 있다.
1. 조건 함수 분리: if문의 조건을 별도의 함수로 분리하여 가독성을 높인다.
// 리팩토링 전
if (user.age > 20 && user.city === 'Seoul') {
// some code
}
// 리팩토링 후
function isAdultInSeoul(user) {
return user.age > 20 && user.city === 'Seoul';
}
if (isAdultInSeoul(user)) {
// some code
}
2. 조기 리턴(early return) 사용: 조건에 따라 일찍 함수에서 빠져나오게 하여 중첩을 줄인다.
// 리팩토링 전
function calculateFee(user) {
if (user.age > 20) {
// some code
} else {
// some code
}
}
// 리팩토링 후
function calculateFee(user) {
if (user.age <= 20) {
// some code
return;
}
// some code
}
이처럼, else와 else if문을 사용해야 하는 경우에도 리팩토링 전략을 통해 Clean Code를 유지할 수 있다. 코드의 가독성과 유지보수성을 고려하는 코딩이 중요하다는 점을 잊지 말자.
✅ else와 else if문 사용의 필요성 및 리팩토링 전략 (2. 조건이 많은 경우)
여러 조건이 복잡하게 얽혀있는 경우, else와 else if문의 사용이 필요할 수 있다. 그러나 이 경우에도 리팩토링 전략을 통해 코드의 복잡성을 줄이고 가독성을 높일 수 있다.
1. 조건 함수 분리: 복잡한 조건을 별도의 함수로 분리하여 가독성을 높인다.
// 리팩토링 전
if (user.age > 20 && user.city === 'Seoul' && user.hasMembership()) {
// some code
} else if (user.age > 20 && user.city === 'Busan' && user.hasMembership()) {
// some code
} else {
// some code
}
// 리팩토링 후
function isAdultMemberInCity(user, city) {
return user.age > 20 && user.city === city && user.hasMembership();
}
if (isAdultMemberInCity(user, 'Seoul')) {
// some code
} else if (isAdultMemberInCity(user, 'Busan')) {
// some code
} else {
// some code
}
2.조기 리턴 사용: 조건에 따라 일찍 함수에서 빠져나오게 하여 중첩을 줄인다.
// 리팩토링 전
function calculateFee(user) {
if (user.age > 20) {
if (user.city === 'Seoul') {
// some code
} else if (user.city === 'Busan') {
// some code
} else {
// some code
}
} else {
// some code
}
}
// 리팩토링 후
function calculateFee(user) {
if (user.age <= 20) {
// some code
return;
}
if (user.city === 'Seoul') {
// some code
return;
}
if (user.city === 'Busan') {
// some code
return;
}
// some code
}
여러 조건이 있는 경우에도 위와 같은 리팩토링 전략을 활용하면, 코드의 복잡성을 줄이고 가독성을 높일 수 있다. 코드를 작성할 때는 항상 이러한 원칙을 지키려는 노력이 중요하다.
✨ 결론
if문의 else와 else if를 사용하는 것이 반드시 나쁜 것은 아니다. 그러나 이들을 사용할 때에는 코드의 가독성과 유지보수성을 고려해야 한다는 것이 Clean Code 원칙의 핵심이다. 이를 위해 조건 함수 분리나 조기 리턴 등의 리팩토링 전략을 적극 활용하여, 코드의 복잡성을 줄이고 가독성을 높이는 것이 필요하다.
특히, else와 else if문을 사용하게 되면 코드의 흐름을 파악하기 어려워지고, 이로 인해 실수를 유발할 수 있으므로 주의가 필요하다. 따라서, 이러한 문제를 방지하고자 else와 else if문의 사용을 최소화하고, 필요한 경우에는 리팩토링 전략을 활용하여 코드의 품질을 높이는 것이 바람직하다.
결국, 모든 코딩 원칙과 마찬가지로 if-else 구조의 활용도 적절한 균형에서 이루어져야 한다. 단순히 원칙을 지키기 위한 원칙이 아니라, 코드의 가독성과 유지보수성을 높이는 데 그 목적이 있음을 이해하고 이를 실천하는 것이 중요하다. 이러한 접근 방식은 결국 더 나은 코드를 작성하고, 더 효율적인 프로젝트 관리를 가능하게 한다.
'코딩공부 > 학습요약' 카테고리의 다른 글
RESTful API란? (0) | 2023.04.21 |
---|---|
[FrontEnd 지식] 브라우저 렌더링 원리와 순서(+성능 최적화 고려사항) (0) | 2023.04.11 |
브라우저 저장소 정리(feat.localStorage, sessionStorage, IndexedDB) (0) | 2023.03.20 |
animation 최적화 정리 (0) | 2023.03.11 |
시멘틱 태그를 사용하는 이유, 웹 표준을 지키는 이유 (1) | 2023.03.05 |
댓글