조건의 분해(Decompose Conditional)
if-else문의 조건이 너무 복잡할 경우 메소드로 치환해 알기 쉬운 코드로 변경한다.
변경하기 전의 프로그램 코드)
if( money >= 100 && tip >= 100 && score >=100 ) {
pay = money ++;
tip += bonus;
} else {
pay = money + tip;
}
위와 같은 코드를 메소드로 치환하여 다음과 같이 변경한다.
if( isBonus() ) {
pay = payBonus();
} else {
pay = pay();
}
또한 조건 분기안에 같은 코드가 있다면 이 코드를 조건 분기 밖으로 이동시켜 작성하는 방법이 ‘중복된 조건기술의 단편을 종합(Consolidate Duplicate Conditional Fragments)’이라 한다.
조건 기술을 가드(Guard)절로 치환하기( Replace Nested Conditional with Guard Clauses)
if-else가 중첩 되어 있어 정상처리가 이해하기 힘들 경우 가드절을 사용해 빨리 return 또는 throw하는 방법이다.
if ( x < 0 ) {
} else {
if ( y < 0 ) {
} else {
if ( width <=0 ) {
result = false;
} else {
if ( height <= 0 ) { result = false; }
}
}
}
위와 같은 조건문은 이해하기 어렵다. 아래와 같이 코드를 변경한다.
if ( x < 0 ) return false;
if ( y < 0 ) return false;
if ( width <= 0 ) return false;
if ( height <= 0 ) return false;
'프로그램 아키텍쳐 > Refactoring' 카테고리의 다른 글
반복문 사용시 성능 향상 방법 (0) | 2010.12.09 |
---|---|
클래스의 추출(Extract Class) (0) | 2010.12.09 |
메소드 추출(Extract Method)와 메소드 이름 변경(Rename Method) (0) | 2010.12.09 |
Null 객체의 도입(Introduce Null Object) (0) | 2010.12.09 |
제어 플래그의 삭제(Remove Control Flag) (0) | 2010.12.09 |