객체지향 생활체조-규칙2

1 분 소요

해당 글은 developerFarm 개발자 블로그의 농장객체지향 생활체조를 참고하여 정리한 글 입니다.

규칙2. else 예약어 사용 금지

개발자라면 if/else 문은 누구나 알고 있을 것이다. 실무에서도 if/else문을 사용하면 간단하게 분기처리를 할 수 있기 때문에 많이 사용한다. 하지만 무분별한 조건절 사용은 코드의 가독성을 저해하고, 중복된 코드를 작성할 여지가 많다. if/else 문을 사용할 때에는 조건이 동등하게 발생하거나 동등한 중요도를 가질 때 사용해야 한다. 하지만 실제 소프트웨어에서의 분기처리 문제들은 모두 다른 중요도를 가지고 있다.

####1. 보호절 사용

double getPayAmount() {     
	double result;      
  	if (_isDead) result = deadAmount();      
  	else {      
    	if (_isSeparated) result = separatedAmount();      
    	else {      
            if (_isRetired) result = retiredAmount();      
            else result = normalPayAmount();      
        };      
    }      
    return result;      
}

간단한 경우에는 보호절(guard clause)로 대체 가능하다.

double getPayAmount() {     
    if (_isDead) return deadAmount();      
    if (_isSeparated) return separatedAmount();      
    if (_isRetired) return retiredAmount();      
    return normalPayAmount();      
};  

####2. 다형성 사용

public void barkAnimal(Animal animal) {
    if (animal instanceof Tiger) {
        System.out.println("어흥");
    } else if (animal instanceof Lion) {
        System.out.println("으르렁");
    }
}
public interface Barkable {
    public void bark();
}

public class Tiger extends Animal {
    public void bark() {
        System.out.println("어흥");
    }
}

public void barkAnimal(Barkable animal) {
    animal.bark();
}

다형성을 사용할 경우 조건문을 사용하였을 때보다 유지보수가 좋아지며, 코드의 의도가 명확히 보이기 때문에 조건절을 통해서 분기처리하는 것보다 다형성을 사용하여 분기처리를 하는것을 지향해야한다.

태그: ,

카테고리:

업데이트:

댓글남기기