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