Java/[문제해결]
[김영한의 실전 자바_중급1] 열거형(ENUM)_중복제거 (p.25)
줌인.
2024. 4. 25. 12:55
[원본 코드 / StringGradeEx3_2]
public class StringGradeEx3_2 {
public static void main(String[] args) {
int price = 10000;
int basic = Grade.BASIC.discount(price);
int gold = Grade.GOLD.discount(price);
int diamond = Grade.DIAMOND.discount(price);
System.out.println("Basic 할인 금액 : " + basic);
System.out.println("GOLD 할인 금액 : " + gold);
System.out.println("DIAMOND 할인 금액 : " + diamond);
}
}
*중복 제거 수행*
[내가 작성한 코드]
public class StringGradeEx3_3 {
public static void main(String[] args) { //배열
int price = 10000;
Grade [] grades = Grade.values();
for (Grade grade : grades) {
System.out.println(grade.name() + " 할인 금액 : " + grade.discount(price));
}
}
}
[김영한 선생님 작성 코드]
public class EnumRefMain3_3 {
public static void main(String[] args) {
int price = 10000;
printDiscount(Grade.BASIC, price);
printDiscount(Grade.GOLD, price);
printDiscount(Grade.DIAMOND, price);
}
private static void printDiscount(Grade grade, int price) {
System.out.println(grade.name() + " 등급의 할인 금액: " +
grade.discount(price));
}
}
내가 작성한 코드 : 열거형 모든 값 순회 | 선생님 작성 코드 : 열거 값에 대해 명시적 함수 호출 |
ⓛ 범용성: 이 코드는 Grade 열거형의 모든 상수를 순회한다. 또한 새로운 등급이 추가되거나 삭제되어도 코드를 수정할 필요 없이 자동으로 새 등급을 처리한다. |
ⓛ 특정성: 이 코드는 명시적으로 등급의 할인을 계산한다. 특정 등급에 대해서만 결과를 보고 싶을 때 유용하다. |
② 가시성: 코드의 의도가 명확하며, 모든 등급의 할인 금액을 한 번에 확인할 수 있다. |
② 구조화: 별도의 메서드를 통해 할인 금액을 계산하고 출력 하는 로직을 분리하여 재사용성과 가독성이 향상된다. |
③ 유지 보수: Grade 열거형이 변경되어도 이 코드 부분은 수정할 필요가 없어 유지 보수가 쉽다. |
③ 유연성: 특정 등급의 할인 금액만 필요할 때, 불필요한 계산을 방지할 수 있다. |
- 자동성 / 확장성, 일관된 처리, 에러방지 측면에서 내가 작성한 코드가 유연할 수 있다.
다만, 특정 등급에 대한 특별한 처리가 필요할 경우 선생님 작성 코드가 더 유연할 수 있다.
728x90