2011년 5월 26일 목요일

Decompose Conditional

if (date.before (SUMMER_START) || date.after(SUMMER_END))
charge = quantity * _winterRate + _winterServiceCharge;
else charge = quantity * _summerRate;


if (notSummer(date))
charge = winterCharge(quantity);
else charge = summerCharge (quantity);


객체지향 프로그램은 종종 조건부 동작의 상당 부분이 다형성에 의해서 처리되기 때문에 절차적 프로그램보다
조건부 동작을 덜 가지고 있다.
다형성은 호출부에서 조건부 동작에 대해 알 필요가 없기 때문에 좋고, 따라서 조건을 확장하는 것이 쉽다.
그 결과, 객체 지향 프로그램은 switch 문을 거의 가지고 있지 않다.

복잡한 조건문이 있는 경우 조건, then부분, 그리고 else 부분에서 메소드를 추출하라.

! 동기
  • 일반적으로 프로그램에서 가장 복잡한 부분 가운데 하나가 복잡한 조건 논리이다.
  • 메소드의 길이는 그 자체로 코드를 읽기 어렵게 만드는 요소이다.
  • 어떤 큰 코드 블록을 가지고 작업할 때 여러분은 그 코드를 분해하고 코드 덩어리를
  •   의도에 맞는 이름을 가진 메소드 호출로 바꿔서 의도를 좀더 명확하게 할수 있다.

! 절차
  • 조건을 하나의 메소드로 뽑아낸다.
  • Then 부분과 else 부분을 각각의 메소드로 뽑는다.
  • 만약 중첩된 조건문을 발견한다면, 보통 먼저 Replace Nested Conditional with Guard Clauese를 사용한다

댓글 없음:

댓글 쓰기

ETL 솔루션 환경

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