2011년 5월 26일 목요일

Replace Nested Conditional with Guard Clauses

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

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


메소드가 정상적인 실행 결로를 불명확하게 하는 조건 동작을 가지고 있는 경우, 모든 특별한 경우에 대해서 보호절을 사용하라.

! 동기
  • 종종 두가지 형태의 조건문을 보게 된다. 첫째는 어느 한쪽 코스가 정상적인 동작부분인지를  검사하는 것이다. 두 번째 형태는 조건문의 한 경우가 정상적인 동작을 나타내고 다른 한 경우는  비정상적인 동작을 나타내는 상황이다.
  • 이런 종류의 조건문은 다른 의도를 가지고 있다, 이런 의도는 코드에 타나야 한다.
  • 둘 다 정상적인 동작 부분이라면, if와 else를 가진 조건을 사용하라.
  • 조건이 예외적인 조건이라면, 조건을 검사하는 boolean 리턴을 하라
  • if-then-else 를 사용하고 있다면 if 구간과 else 구간에 동등한 무게를 두고 있다.  이것은 그 두 부분이 동등하게 중요하다는 것을 나타낸다. 대신에 보호절은 “이것은 드문 경우고,  만약에 이경우가 일어난다면 뭔가를 하고 밖으로 나가라”고 말하는 것이다.
  • 메소드는 하나의 종료점을 가져야 한다고 배운 프로그래머들이 종종  중첩된 조건문 코드를 작성한다. 코드를 읽는 사람에게 비어있는 else 블록을 보이게 하는 것은 단지 이해를 어렵게 할 뿐이다.

! 절차
  • 각각의 검사에 보호절을 넣어라
  • 각각의 검사 부분을 보호절로 바꾼 후 컴파일, 테스트를 한다.

댓글 없음:

댓글 쓰기

ETL 솔루션 환경

ETL 솔루션 환경 하둡은 대용량 데이터를 값싸고 빠르게 분석할 수 있는 길을 만들어줬다. 통계분석 엔진인 “R”역시 하둡 못지 않게 관심을 받고 있다. 빅데이터 역시 데이터라는 점을 볼때 분산처리와 분석 그 이전에 데이터 품질 등 데이...