더북(TheBook)
    var validationResult = service.ValidateShippingForm(form);
    if (validationResult != ShippingFormValidationResult.Valid) {
        return error();
    }
→ 서버측 모델 유효성 검사 부분
    bool success = service.SaveShippingInfo(form);
    if (!success) {
        ModelState.AddModelError("", "Problem occurred while " +
        "saving your information, please try again");
        return error();
    }
    return RedirectToAction("Index", "BillingForm");
→ 저장 부분과 성공적인 경우
}

이것이 함수를 더 작게 만드는 데 무슨 도움이 되냐고 반문할 수 있다. 그렇다. 사실, 이것은 함수를 더 크게 만든다. 하지만 이렇게 함수의 로직이 있는 부분을 구분하면 해당하는 부분을 의미 있는 함수로 리팩터링할 수 있다. 그리고 이는 작은 함수와 설명적인 코드를 동시에 갖는 열쇠가 된다. 이 논리를 이해하는 것이 간단하지 않다면 동일한 코드를 훨씬 더 이해하기 쉬운 청크로 리팩터링할 수 있다. 코드 3-18에서는 앞에서 확인한 논리적인 부분을 사용해 Submit 함수에서 로직을 추출한다. 기본적으로 유효성 검증 부분, 실제 저장하는 부분, 저장 오류 처리 부분, 성공적인 응답 부분이 있다. 이렇게 네 가지 부분만 함수의 본체에 남겨둔다.

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