더북(TheBook)

1.2.2 안전성 원칙을 간단한 식에 적용하기

안전하지 않은 프로그램을 더 안전하게 바꾸는 방법을 알아보기 위해 신용 카드로 도넛을 구매하는 간단한 예제를 살펴보자.

예제 1-1 부수 효과가 있는 코틀린 프로그램

fun buyDonut(creditCard: CreditCard): Donut {
    val donut = Donut()
    creditCard.charge(Donut.price) 
    return donut 
}

부수 효과로 신용 카드를 청구한다.

도넛을 돌려준다.

이 코드에서 신용 카드 청구는 부수 효과다. 신용 카드 청구는 은행에 연결해 신용 카드의 유효성을 검사하고 승인을 받은 후 거래 정보를 등록하는 과정으로 이뤄질 것이다. 이 함수는 도넛을 반환한다.

이런 종류의 코드는 테스트하기 어렵다는 문제가 있다. 테스트를 위해 이 프로그램을 실행하려면 은행에 연결해 일종의 목 계정으로 거래를 등록하는 과정이 필요하다. 아니면 목(mock) 신용 카드를 만들고 charge 함수를 호출하는 효과를 등록한 다음, 테스트를 진행한 후 목의 상태를 검증해야 한다.

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