객체지향 생활체조-규칙2
해당 글은 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();
}
다형성을 사용할 경우 조건문을 사용하였을 때보다 유지보수가 좋아지며, 코드의 의도가 명확히 보이기 때문에 조건절을 통해서 분기처리하는 것보다 다형성을 사용하여 분기처리를 하는것을 지향해야한다.
댓글남기기