일반적으로 인터페이스 - 테스트 - 구현 순서로 진행한다.
feat(인터페이스): implement (구현한 메서드)
- (관련 테스트 메서드 나열...)
입력부터 출력까지
자료형의 변환으로 논리적 흐름을 표현한다.
필요하다면 임의의 자료형을 새롭게 정의할 수 있다.
- 문자열(+분리 규칙) -> 숫자 배열 -> 숫자(덧셈 결과)
String + ParseRule -> Iterable<Number> -> Number
작업을 진행할 대상을 선택하고,
책임과 역할을 체크리스트로 나열한다.
- 구분자(인터페이스;
Delimiter): 주어진 문자열을 자신의 구분 규칙에 따라 숫자로 변환한다.- 기본 구분자(클래스;
IntegerDefaultDelimiter)- 쉼표(,)와 콜론(:) 모두 구분자로 간주한다.
- 커스텀 구분자(클래스;
IntegerCustomDelimiter)- 문자열 앞부분의
"//"와"\n"사이에 위치하는 문자를 구분자로 간주한다.
- 문자열 앞부분의
- 기본 구분자(클래스;
- 계산기(클래스;
Calculator): 주어진 문자열을 분리하고, 더한 결과를 반환한다.
IllegalArgumentException을 발생시키고 종료한다.
- 커스텀 구분자가 기본 구분자와 겹치면 예외를 발생시킨다.
- 커스텀 구분자가 숫자면 의도치 않은 결과가 발생할 수 있으므로,
요구사항에 명시되지는 않았지만 예외 상황으로 간주한다.
- 커스텀 구분자가 숫자면 의도치 않은 결과가 발생할 수 있으므로,
- 숫자를 분리할 때, 형식 오류가 발생할 수 있다.
- 분리된 숫자가 양수가 아니라면 예외를 발생시킨다.
- 숫자를 더할 때, 오버플로우가 발생할 수 있다.