- 덧셈할 문자열을 입력받는 기능을 구현한다.
- 덧셈 문자열 입력 안내 메시지를 출력한다.
- 사용자로부터 덧셈할 문자열을 입력받는다.
- 입력된 문자열을 검증한다.
- 숫자가 하나라도 포함되어있지 않은 경우, 예외를 반환한다.
- 기본 구분자 중 하나라도 포함되어있지 않은 경우, 예외를 반환한다.
- 입력된 문자열을 파싱 및 추가 검증한다.
- 입력값에서 편리하게 숫자를 추출하기 위해 전처리를 진행한다.
- 문자열에 커스텀 구분자가 포함되어 있는지 확인한다.
- 문자열 앞 부분에 커스텀 구분자가 있는 경우, 이를 따로 저장한다.
- 커스텀 구분자를 뺸 문자열을 입력값으로 최종 저장한다.
- 문자열로부터 숫자들을 추출한다.
- 주어진 문자열에 구분자가 포함되어 있는지 확인한다.
- 만약 구분자가 포함되어 있는 경우, 구분자를 기준으로 문자열을 분리한다.
- 구분자를 통해 분리된 값이 빈 문자열일 경우, 결과로 0을 반환한다.
- 구분자를 통해 분리된 값이 숫자가 아닐 경우, 예외를 반환한다.
- 구분자를 통해 분리된 값이 음수일 경우, 예외를 반환한다.
- 최종적으로 분리된 숫자들을 리스트에 저장한다.
- 입력값에서 편리하게 숫자를 추출하기 위해 전처리를 진행한다.
- 덧셈 결과를 출력한다.
- "결과"라는 문자열와 덧셈 결과를 ":" 구분자를 통해 구분한다.
- 리스트에 저장된 숫자들을 더하는 기능을 구현한다.
- 리스트에 저장된 숫자들을 모두 더한 결과를 반환한다.
- 커스텀 구분자에 실제 이스케이프 문법("")이 포함된 경우에 대한 예외 처리를 추가한다.
- 커스텀 구분자에 숫자가 포함되는 경우에 대한 예외 처리를 추가한다.
- 커스텀 구분자가 빈 문자열("")일 경우에 대한 예외 처리를 추가한다.
- 구분자에 의해 분리된 값이 숫자가 아닌 경우에 대한 예외 처리를 추가한다.
- 입력값 검증과 관련된 메서드들은 모두
InputValidator에서 관리하도록 이동시킨다. - 입력값 파싱 과정에서 쓰이는 검증 메서드들은
InputFilter내에서InputValidator를 참조하여 사용하도록 수정한다.
- 에러 메시지를 Enum을 통해 상수로 관리하도록 수정한다.
- 구분자 목록을 Enum을 통해 상수로 관리하도록 수정한다.
- 숫자 값들을 변경할 수 없도록
final키워드를 추가한다. - 숫자 리스트를 전달할 떄, 불변 리스트로 전달될 수 있도록 List.of 또는 unmodifiableList를 적용한다.
- 정적 클래스와 일반 클래스의 구분을 분명히 하기 위해
InputValidator클래스를 제외한 모든 클래스를 인스턴스화한다. -
ApplicationConfig클래스를 통해 여러 개의 인스턴스를 한 곳에서 관리한다.
- 각 예외 상황에 대한 테스트 케이스를 추가한다.
- 그 외에 각 메서드들이 정상적으로 동작하는지 확인할 수 있도록 테스트 케이스를 추가한다.
-
Delimiters클래스를 생성하여, 구분자 목록을 관리하도록 수정한다.
- 기존
InputFilter클래스에 있던 커스텀 구분자 처리 로직을CustomDelimiterProcessor클래스로 이동시킨다.