절차
- 함수들이 공유하는 공통 데이터 레코드를 캡슐화 한다
→ 공통 데이터가 레코드 구조로 묶여 있지 않다면 먼저 매개변수 객체 만들기로 데이터를 하나로 묶는 레코드를 만든다. - 공콩 레코드를 사용하는 함수 각각을 새 클래스로 옮긴다(함수 옮기기)
→ 공통 레코드의 멤버는 함수 호출문의 인수 목록에서 제거한다. - 데이터를 조작하는 로직들은 함수로 추출해서 새 클래스로 옮긴다.
예시
Before:
function base(aReading) {
//...
}
function taxableCharge(aReading) {
//...
}
function calculateBaseCharge(aReading) {
//...
}
After:
class Reading {
base() {
//...
}
taxableCharge() {
//...
}
calculateBaseCharge() {
//...
}
}
출처 : 리팩터링 2판 – Chapter6