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 함수에서 로직을 추출한다. 기본적으로 유효성 검증 부분, 실제 저장하는 부분, 저장 오류 처리 부분, 성공적인 응답 부분이 있다. 이렇게 네 가지 부분만 함수의 본체에 남겨둔다.