2011년 5월 26일 목요일

Replace Temp with Query

double basePrice = _quantity * _itemPrice;
if (basePrice > 1000)
return basePrice * 0.95;
else
return basePrice * 0.98;
if (basePrice() > 1000)
return basePrice() * 0.95;
else
return basePrice() * 0.98;
...
double basePrice() {
return _quantity * _itemPrice;
}


어떤 수식의 결과값을 저장하기 위해서 임시변수를 사용하고 있다면, 수식을 뽑아내서 메소드로 만들고, 임시변수를
참조하는 곳을 찾아 모두 메소드 호출로 바꾼다. 새로 만든 메소드는 다른 메소드에서도 사용될 수 있다.

! 동기
-      Extract Method를 적용하기 전의 필수 단계
-      임시변수가 사용되는 메소드는 보통 길이가 길어지는 경향이 있다.
-      지역변수는 메소드의 추출을 어렵게 하기 때문에 가능한 많은 지역변수를 질의 메소드로 바꾸는 것이 좋다.
-      만약 임시변수가 어떤 결과를 모으는 경우 질의 메소드 안으로 몇몇 로직을 복사할 필요가 있다.
-      임시변수는 종종 루프에서의 요약정보를 저장하는데, 루프전체가 하나의 메소로 추출된다.
! 절차
-      임시변수에 값이 한번만 대입되는지를 확인한다.
-      임시변수를 final 로 선언한다.
-      확인한다.
-      대입문의 우변을 메소드로 추출한다.
-      Inline Temp를 적용한다.
! 관련 리펙토링
-      Extract Method
-      Inline Temp
-      Split Temporary Variable
-      Separate Query from Modifier

댓글 없음:

댓글 쓰기

ETL 솔루션 환경

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