if-else 문은 Java 프로그래밍에서 흔히 사용되는 제어 구조입니다.
그러나 복잡한 조건 로직을 다룰 때 코드가 지저분해지고 유지보수가 어려워질 수 있습니다.
이 글에서는 enum을 사용하여 if-else 문을 대체하는 더 깔끔하고 유지보수가 쉬운 접근 방식을 살펴보겠습니다
1. 문제 : 복잡한 if-else 문
다음과 같은 코드를 살펴 봅시다.
public class PaymentProcessor {
public void processPayment(String paymentMethod, double amount) {
if (paymentMethod.equals("CREDIT_CARD")) {
System.out.println("신용카드로 " + amount + " 결제 처리");
} else if (paymentMethod.equals("DEBIT_CARD")) {
System.out.println("직불카드로 " + amount + " 결제 처리");
} else if (paymentMethod.equals("PAYPAL")) {
System.out.println("PayPal로 " + amount + " 결제 처리");
} else {
System.out.println("알 수 없는 결제 방식");
}
}
}
이 코드에는 몇 가지 문제가 있습니다:
- 새로운 결제 방식을 추가할 때마다 if-else 문을 수정해야 합니다.
- 문자열 비교는 오타의 위험이 있습니다.
- 코드가 길어지면 가독성이 떨어집니다.
2. 해결책 : enum 사용하기
이제 enum을 사용하여 이 코드를 개선해 보겠습니다.
public enum PaymentMethod {
CREDIT_CARD {
@Override
public void processPayment(double amount) {
System.out.println("신용카드로 " + amount + " 결제 처리");
}
},
DEBIT_CARD {
@Override
public void processPayment(double amount) {
System.out.println("직불카드로 " + amount + " 결제 처리");
}
},
PAYPAL {
@Override
public void processPayment(double amount) {
System.out.println("PayPal로 " + amount + " 결제 처리");
}
};
public abstract void processPayment(double amount);
}
public class PaymentProcessor {
public void processPayment(PaymentMethod paymentMethod, double amount) {
paymentMethod.processPayment(amount);
}
}
3. 장점
- 코드 구조 개선: 각 결제 방식의 로직이 해당 enum 상수 내에 캡슐화되어 있습니다.
- 타입 안전성: 문자열 대신 enum을 사용하므로 컴파일 시점에 오류를 잡을 수 있습니다.
- 확장성: 새로운 결제 방식을 추가하려면 enum에 새 상수를 추가하기만 하면 됩니다.
- 가독성: 코드가 더 깔끔하고 의도가 명확해집니다.
- 유지보수성: 각 결제 방식의 로직을 독립적으로 수정할 수 있습니다.
'Java' 카테고리의 다른 글
[JAVA] Java Stream의 다양하고 강력한 기능들 (0) | 2025.03.18 |
---|---|
예제로 알아보는 Java Stream API (0) | 2025.02.07 |
if-else vs switch vs enum 처리 속도 비교 (0) | 2025.02.03 |
[List] ArrayList 와 LinkedList (0) | 2021.03.18 |