1주차 미션은 문자열 덧셈 계산기 구현이었다.


1주차 미션과 시험이 겹쳐서, 미션 마감 하루전 미션을 시작하게 되었다.
미션을 진행하면서 처음에 눈에 들어온 것은, '기능 요구 사항에 기재되지 않은 내용은 스스로 판단하여 구현한다.' 는 것이었다.
간단해 보였지만 어떻게 요구사항을 분석해 나가느냐에 따라 차이가 큰 미션이라고 생각했다.
기능 목록을 작성하고, 기능 목록을 기준으로 커밋하라는 요구사항이 있었다.

먼저 구현할 기능을 정리하고 순서대로 기능을 추가하였다.
처음에 고민하면서 기능 목록을 꼼꼼하게 정리하고 미션을 시작하니까 수월했던것 같다.

발생할 수 있는 예외에 대해서도 README에 정리해 보았다.
고민했던점 !
1.입력값의 범위
입력값의 타입과 범위를 어떻게 설정할지 고민하였다.
요구사항이 단순한 문자열 덧셈이었기 때문에, 큰 수를 처리할 필요가 없다고 판단하여 int 타입을 사용하였다.
2. 인터페이스 구현 여부
Calculator 인터페이스를 도입할지 고민했지만, 현재는 구현체가 하나뿐이었기에 불필요한 추상화라고 판단하였다.
따라서 인터페이스 없이 단일 클래스로 유지했다.
3. 클래스 역할 분리 (단일 책임 원칙)
처음에는 문자열 파싱과 계산을 한 클래스에서 처리했지만, 계산기의 핵심 역할은 계산에 집중해야 한다고 생각했다.
이에 따라 구분자 처리 로직을 DelimiterParser 로 분리하고, StringCalculator 는 계산 로직에만 집중하도록 설계하였다.
4. 예외 처리 구조
예외 메시지를 직접 문자열로 작성하면 중복이 발생하고 유지보수가 어렵다고 판단했다.
따라서 ErrorMessage 클래스를 만들어 예외 메시지를 상수로 관리하도록 하였다.
느낀점
기능을 모두 개발하고 나서 pr을 보내는데, 요구사항을 다시 읽으면서 빈 입력값 처리에 대한 오해를 발견했다. 처음에는 빈 입력을 예외로 처리했지만, 요구사항을 확인한 결과 빈 입력은 0을 반환해야 한다는 것을 알게 되었고 코드를 수정했다.. 이 경험을 통해 요구사항을 꼼꼼히 분석하는 것의 중요성을 다시 한번 느낄 수 있었던 것 같다.
그리고 미션을 통해 JUnit을 이용한 테스트 코드를 작성하였다. 테스트 코드 작성은 오랜만이라 다시 JUnit을 공부하며 작성해야 했다..
기능에 대한 동작을 맞는지 바로 확인할 수 있다는 점이 좋았다. 앞으로도 미션을 진행하며 꼼꼼한 테스트 코드 작성 습관을 유지해보려고 한다.
1주차 미션을 통해, 앞으로의 미션을 어떤 관점으로 진행해야 할지 감을 잡을 수 있었던 것 같다!
'experience' 카테고리의 다른 글
| [우아한 테크코스 8기] 3주차 프리코스 회고 (2) | 2026.03.07 |
|---|---|
| [우아한 테크코스 8기] 2주차 프리코스 회고 (0) | 2026.03.07 |