잠시 멈춰서서 귀를 기울이면, 테스트가 우리에게 말하는 소리를 들을 수 있다. “이봐, 보고서
생성은 계산이 근본이야. 보고서 생성은
List
<
String
>
를
List
<
String
>
로 변환하거든. 검사
대상이 두 리스트이기 때문에 우린 그 사실을 알아.”
테스트가 우리에게 이야기하는 내용은
generate
의 근본적인 시그니처가
generate
(
lines
:
List
<
String
>):
List
<
String
>
라는 것이다. 만약 이것이 진짜 시그니처라면, 여기서
IOException
을 던진다고 선언해서도 안 된다. 함수 밖에서 모든
I
/
O
가 일어날 것이기 때문이
다.
I
/
O
는 다른 곳에서 발생해야만 하는데, 다른 모든 동작과 마찬가지로,
I
/
O
발생 장소를 프
로그램 진입점에 가깝게 옮기면 옮길수록 쉽고 멋진 계산으로 처리할 수 있는 부분이 더 많아
진다.
이런 코드를 목표로 리팩터링을 해야 할까? 그렇다. 이 질문은 답을 구하는 것이 아닌 수사적
인 질문일 뿐이다.
20.2
I
/
O
에서 데이터로
리팩터링의 첫 단계에서는
generate
에서
reader
파라미터를 없애자. 코드는 현재 다음과 같다.
예제
20.4
[
io
-
to
-
data
.
3
:
src
/
main
/
java
/
travelator
/
marketing
/
HighValueCustomersReport ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month, and much more.