더북(TheBook)

함수 호출을 연결하는 일반적인 방법이지만, 가독성이 좋지 않아 ‘크리스마스 트리 들여쓰기’라고 불리기도 한다. 이 방식에서는 함수의 순서가 뒤바뀌어 가장 먼저 호출될 함수(extractListData)를 가장 안쪽에 적어야 한다.

코틀린 let 함수를 사용하면 원하는 데이터에 대해 함수를 호출할 수 있다(부록 B 영역 함수 참고). 이를 사용하면 각 함수가 이전 함수의 출력을 입력으로 받는 방식으로 함수 호출을 연쇄하는 코드를 훨씬 더 읽기 쉽게 만들 수 있다. 다음 코드는 ‘크리스마스 트리’ 코드와 동일하지만 더 읽기 쉽고 우리의 디자인 다이어그램에 더 가깝다.

fun getToDoList(request: Request): Response =
    request
        .let(::extractListData)
        .let(::fetchListContent)
        .let(::renderHtml)
        .let(::createResponse)

함수 순서가 이전 예제와 반대라는 점에 주의하자.

함수 참조를 사용하는 let 함수는 리눅스 셸의 | 연산자나 자바스크립트 및 F#의 |> 연산자와 비슷하게 작동한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.