최종 테스트를 대비해 빠르게 구현하는 습관을 먼저 들이기로 했습니다.
그래서 TDD와 같은 개발방법론보다는 우선 구현하는 것에 초점을 뒀습니다.
레이어는 MVC 패턴을 차용해 각 관심사를 분리했습니다.
이를 패키지 구조로 아래와 같이 작성했습니다.
calculator/
├── application/
├── domain/
├── ui/
└── Application.class
1. 계산기는 기본 구분자(`:`, `,`)를 가진다.
2. 계산기는 커스텀 구분자를 지정할 수 있다.
* 커스텀 구분자는 문자열 앞부분의 `//`와 `\\n` 사이에 위치하는 `문자`를 커스텀 구분자로 사용한다.
* `//.\\n` -> 커스텀 구분자 = `.`
3. 분리한 각 숫자의 합을 반환한다.
4. 빈 문자열일 경우 0을 반환한다.
5. 잘못된 입력 시 `IllegalArgumentException`이 발생한다.
* 양수가 아니거나 구분자 외 문자가 있는 경우
* 프로그램은 즉시 종료된다.
요구사항을 토대로 기능 구현 목록을 작성하니 세가지 구현 스텝이 나왔습니다.
1 → 3 → 542해당 순서로 기본 구분자용 계산기와 커스텀 구분자용 계산기를 만들면 되겠다는 생각이 들었습니다.