2011년 5월 26일 목요일

Consolidate Duplicate Conditional Fragments

if (isSpecialDeal()) {
total = price * 0.95;
send();
}
else {
total = price * 0.98;
send();
}

if (isSpecialDeal())
total = price * 0.95;
else
total = price * 0.98;
send();



동일한 코드 조각이 조건문의 모든 분기 안에 있는 경우 동일한 코드를 조건문 밖으로 옮겨라

! 동기
-      때때로 조건문의 모든 구간에서 실행되는 동일한 코드를 보게 된다.
-      이런 경우 이 코드를 조건문 밖으로 옮겨야 한다.
! 절차
-      조건에 상관없이 동일하게 실행되는 코드를 확인한다.
-      공통으로 사용되는 코드가 시작 부분에 있다면, 그 코드를 조건문 앞으로 옮긴다.
-      공통으로 사용되는 코드가 끝 부분에 있다면, 그 코드를 조거문 뒤로 옮긴다.
-      공통으로 사용되는 코드가 중간 부분에 있다면, 그 코드의 앞또는 뒤에 있는 코드와 위치를 바꿀 수 있는지를 살펴본다.
-      만약 한 문장보다 많다면 그 코드를 메소드로 추출하라.
@ Remove Control Flag
일련의 boolean 식에서 컨트롤 플래그 역할을 하는 변수가 있는 겨우 break 또는 return 을 대신 사용하라.
! 절차
-      논리문 밖으로 나오도록 하는 컨트롤 플래그 값을 찾는다.
-      논리문 밖으로 나오도록, 컨트롤 플래그에 값을 설정하던 부분을 찾아 break 나 continue 문으로 바꾼다.
다른 방법
-      로직을 메소드로 뽑아낸다.
-      논리문 밖으로 나오도록 하는 컨트롤 플래그의 값을 찾는다.
-      논리문 밖으로 나오도록 컨트롤 플래그에 값을 설정하는 부분을 return 으로 바꾼다.

댓글 없음:

댓글 쓰기

ETL 솔루션 환경

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