- 지금까지의 리팩토링은 함수에 구조를 추가하는 데에 초첨을 맞춤
- 복잡한 코드를 작은 단위로 나누고 적절한 이름을 부여하는 것도 중요함
point. 코드의 계산과 출력 로직을 분리
-
계산과 출력 로직 분리
- 계산 코드가 이미 함수로 분리되어 있어서, 이제는 결과를 텍스트가 아닌 HTML 형식으로 출력하는 코드만 작성하면 됨.
-
문제점
- 계산 코드가 텍스트 출력 함수 내부에 중첩되어 있음.
- 그래서 HTML로 변환하려면, 계산 코드를 다시 복사해서 HTML 출력 함수에 넣어야하는 상황.
-
목표
- 계산 코드를 복사하고 붙여넣고 싶지 않음.
- 중복된 코드를 피하고, 텍스트 출력 함수와 HTML 출력 함수에서 동일한 계산 로직을 재사용하고 싶음.
-
사용한 기법
Split Phase (154): 단계 분리
- 로직을 두 부분으로 분리
- 계산하는 부분, 출력하는 부분
- 중간 데이터 구조(계산하는 부분)를 생성해 두 번째 단계(출력하는 부분)로 전달
Split Phase (154)를 위해서는 두 번째 단계를 구성하는 코드를 Extract Function (106) 기법을 사용해 분리
- 이렇게 함으로써.
statement 함수는 이제 출력과 관련된 코드가 없어지고, renderPlainText 함수가 출력 작업을 담당하게 됨
-
- 기존 코드
-
- 중간 데이터 구조 넣음
-
- 계산 로직 분리
-
- performances 도 중간 데이터 객체에 추가
-
- 공연 기록에 play 데이터 추가
-
- play 추가
-
renderPlainText에서. playFor에 대한 모든 참조를 data를 사용하도록 교체
-
- amountFor도 비슷한 방식으로 이동
-
- volumeCredits도 비슷한 방식으로 이동
-
- totalAmount,totalVolumeCredits ****도 비슷한 방식으로 이동