웹 서비스에 RequestDTO를 보내는 클래스 작업 중입니다. 요청을 전송하기 전에 유효성을 검사해야합니다.순환 복잡도를 줄이는 방법은 무엇입니까?
요청을 3 곳에서 보낼 수 있으며 각 요청 유형에 대해 다른 유효성 검사 규칙이 있습니다 (예 : request1에는 이름과 전화 번호가 있어야하며, request2에는 주소가 있어야합니다.)
필자는 긴 필드 목록 (이름, 주소, 도시, 전화 번호 등)을 포함하는 DTO를 가지고 있으며 아무런 문제가없는 동일한 DTO입니다 어떤 요청 유형인가.
나는 3 가지 유효성 검사 방법을 만들었고 그 유형에 따라 적절한 방법이 호출되었습니다.
각 방법마다 필자는 각 요청 유형에 필요한 필드를 확인하기위한 if-else의 긴 목록을 가지고 있습니다.
private void validateRequest1(Request request) {
StringBuilder sb = new StringBuilder();
if (null == request) {
throw new IllegalArgumentException("Request is null");
}
if (isFieldEmpty(request.getName())) { *see below
sb.append("name,"));
}
if (isFieldEmpty(request.getStreet())) {
sb.append("street,"));
}
...
isFieldEmpty()
검사 널 (null)과 isEmpty()
의 캐릭터 및 반환하는 부울
내 질문은 그래서이 .. 나에게 그 방법 중 하나 (28)의 복잡성을 제공은 이러한 복잡성을 줄일 수있다? - 그렇다면 어떻게해야할까요?
는 궁극적으로 나는 필드를 많이 확인해야하고 나는이이 검사의 많은없이 할 수있는 방법을 볼 수 없습니다 :/
내 아이디어는 다음과 같습니다 : 공허 (또는 다른) 체크와 취할 조치 ('sb.append()') 등을 캡슐화하는 일종의'FieldChecker' 객체를 사용하고 그러한 대상들. 이렇게하면 코드의 출력과 입력을 명시 적으로 정의해야하므로 코드가 명확 해집니다. – millimoose