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
'OOP' 카테고리의 다른 글
[객체지향 생활체조 원칙] 규칙 6. 모든 엔티티를 작게 유지한다 (0) | 2022.11.07 |
---|---|
[객체지향 생활체조 원칙] 규칙 5. 줄여 쓰지 않는다(축약 금지). (0) | 2022.11.07 |
[객체지향 생활체조 원칙] 규칙 4. 한 줄에 점을 하나만 찍는다. (0) | 2022.11.07 |
[객체지향 생활체조 원칙] 규칙 3. 모든 원시 값과 문자열을 포장한다. (0) | 2022.11.07 |
[객체지향 생활체조 원칙] 규칙 1. 한 메서드에 오직 한 단계의 들여 쓰기만 한다. (2) | 2022.11.05 |
댓글