[객체지향 생활체조 원칙] 규칙 2. else 예약어를 쓰지 않는다.
본문 바로가기
OOP

[객체지향 생활체조 원칙] 규칙 2. else 예약어를 쓰지 않는다.

by IYK2h 2022. 11. 6.
728x90

else 예약어를 쓰지 않는다.

else 예약어를 사용하지 않고 코드를 작성해보라. switch/case 문을 사용하는 것도 허용하지 않는다.

이번 원칙의 목적은 한 메소드에서 발생하는 분기 문을 줄이자는 것이다. 분기 문을 많이 가지고 있는 메소드는 많은 기능이 있을 확률이 높다.

아래 성적 처리를 보자

public static void getGrade(Int score) {

  if (score >= 95) {
    grade = "A+";
  }
  else if (score >= 90) {
    grade = "A0";
  }
  else if (score >= 85) {
      grade = "B+";
    }
    else if (score >= 80) {
      grade = "B0";
    }  
  else {
    grade = "C";
  }

  System.out.println("학점 : " + grade);

}

변경 후

public static void getGrade(Int score) {

  if (score >= 95) {
    grade = "A+";
  }
  if (score >= 90) {
    grade = "A0";
  }
  if (score >= 85) {
      grade = "B+";
    }
    if (score >= 80) {
      grade = "B0";
    }  
    if (score < 80) {
    grade = "C";
  }

  System.out.println("학점 : " + grade);

}

혹은

public static String getGrade(Int score) {

  if (score >= 95) return "A+";
  if (score >= 90) return "A0";
  if (score >= 85) return "B+";
    if (score >= 80) return "B0";
    if (score < 80) return "C";
    }
}

public static void main(String[] args) {
  int score = 85;
  String grade = getGrade(score);
    System.out.println("학점 : " + grade);
}

장점

이러한 early return 패턴으로 코드를 작성하면 불필요한 지역변수의 생성을 막을 수 있다.

메소드의 동작을 위한 '참' 조건을 기반으로 생각하는 것이 훨씬 명확해진다.

Null 객체 패턴, State, 전략 패턴(Strategy Pattern)을 시도해보면 몇몇 상황에서도 도움이 될 것이다. 상태에 대한 분기가 몇 군데 걸쳐 중복돼 있을 때 Strategy 패턴은 특히 유용하다.

728x90

댓글