이렇게 추가되는 암시적 인자를 감안하면 클로저를 순수 함수와 조화시킬 수 있다. 코드를 리팩터링할 때나 함수를 다른 함수에 넘길 때 클로저가 문제될 수 있다. 이로 인해 읽기 어렵고 유지보수하기 어려운 프로그램이 생길 수 있다.

    더 읽기 쉽고 유지 보수하기 쉬운 프로그램을 만드는 한 가지 방법은 프로그램을 더 모듈화(modular)하는 것이 있다. 더 모듈화한다는 말은 프로그램의 각 부분이 서로 독립적인 모듈로 작용하도록 만든다는 뜻이다. 클로저 대신 튜플을 인자로 받는 함수를 사용하면 모듈화를 달성할 수 있다.

    val taxRate = 0.09
    fun addTax(taxRate: Double, price: Double) = price + price * taxRate
    
    println(addTax(taxRate, 12.0))

    이와 동일한 방법을 함수 값에도 적용할 수 있다.

    val taxRate = 0.09
    
    val addTax = { taxRate: Double, price: Double -> price + price * taxRate }
    
    println(addTax(taxRate, 12.0))
    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.