✏️6.9 여러 함수를 클래스로 묶기 (Combine Functions into Class)
리팩터링 전
function base(aReading) {...}
function taxableCharge(aReading) {...}
function calculateBaseCharge(aReading) {...}리팩터링 후
class Reading {
base() {...}
taxableCharge() {...}
calculateBaseCharge() {...}
}🧷 배경
공통 데이터를 중심으로 작동하는 함수 무리를 발견하면 클래스 하나로 묶는다. 이미 만들어진 함수를 재구성할 때는 물론, 새로 만든 클래스와 관련하여 놓친 연산을 찾아서 새 클래스의 메서드로 뽑아내는데도 좋다. 저자는 중첩 함수보다 클래스를 선호한다.
📍 클래스로 묶었을 때 장점
함수들이 공유하는 공통 환경을 더 명확하게 표현할 수 있다.
각 함수에 전달되는 인수를 줄여서 객체 안에서의 함수 호출을 간결하게 만들 수 있다.
객체를 시스템의 다른 부분에 전달하기 위한 참조를 제공할 수 있다.
🧷 절차
함수들이 공유하는 공통 데이터 레코드를 캡슐화한다.
공통 레코드를 사용하는 함수 각각을 새 클래스로 옮긴다.
데이터를 조작하는 로직들은 함수로 추출해서 새 클래스로 옮긴다.
🧷 리팩터링 전
🧷 리팩터링 후
Previous6.8 매개변수 객체 만들기 (Introduce Parameter Object)Next6.10 여러 함수를 변환 함수로 묶기 (Combine Functions into Transform)
Last updated