[문자열 덧셈 계산기] 배찬용 미션 제출합니다. #1110
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
✅ 요구 기능 목록
숫자 추출 및 합산
쉼표(,) 또는 콜론(:)으로 구분된 문자열 처리
예: "" => 0, "1,2" => 3, "1,2,3" => 6, "1,2:3" => 6
커스텀 구분자 지원
문자열 앞부분의 "//"와 "\n" 사이의 문자를 구분자로 사용
예: "//;\n1;2;3" => 결과 6
입력 오류 처리
잘못된 입력에 대해 IllegalArgumentException 발생
입출력 요구 사항
입력: 사용자에게 "덧셈할 문자열을 입력해 주세요." 메시지 출력
출력: "결과 : {계산 결과}"
🛠️ 구현 내용
빈 문자열 처리
빈 문자열을 입력받았을 때 예외를 발생시키도록 구현
사용자 입력 프롬프트
사용자에게 입력을 요청하는 메시지를 추가
결과 출력 형식 지정
계산 결과를 특정 형식으로 출력
계산 로직 구현
문자열 파싱 후 합산하는 로직 추가
입력 파싱
기본 구분자 및 커스텀 구분자를 지원하는 로직
잘못된 입력 처리
음수나 잘못된 숫자 형식에 대한 검증 추가
입력 처리
Console API를 활용하여 사용자로부터 문자열 입력 받기
후기
이전에 했던 코딩에서는 저 혼자 코드를 작성하고 혼자 코드를 보기 때문에 함수 분리, 함수명, 기능마다 클래스 분리를 생각하며 코드를 작성하지 않았습니다. 이번에 했던 코딩에서는 OOP의 기초를 학습하는 좋은 계기가 되었습니다.
테스트 코드를 사용해본적이 1번 뿐이였습니다. 어떻게 테스트를 해야 할지도 막막했습니다. 때문에 테스트는 뒤로 미루고 기능 구현에 몰입했습니다. 테스트를 거치지 않고 작성을 하다보니 중간중간 오류가 좀 많아서 시간이 많이 소모 되었습니다.
기능이 거의 구현이 되었을때 테스트를 도전해보았고, 이로 인해 빈 문자열에서 오류를 발견했습니다. 테스트 코드로 오류를 찾는것이 확실한 방법이며, 시간을 단축 시킬 수 있다는 중요성을 이번에 깨닫게 되었습니다.
성장한 점
이번 과제를 통해 함수형 프로그래밍에서 객체 지향 프로그래밍으로 한 걸음 나아갔다고 생각합니다.
어떻게 해야 유지보수, 확장을 할 때 조금이라도 편하게 코드를 작성할 수 있을까 고민을 많이 하는 시간을 가졌습니다.
기능의 순서, 결합도, 함수명, 클래스를 어떻게 나누냐에 따라 정말 많은 차이가 있다고 생각하고 있고, 처음 기능을 readme에 적을 때 더 많은 시간을 가졌어야 했다고 생각이 듭니다.
다음 기능 구현에서는 좀 더 세분화 하고, 자세한 기능 목록을 나열할 것입니다.
향후 계획
객체 지향 프로그래밍에 대한 이해와 관심이 깊어졌습니다.
앞으로의 챌린지에서도 프로젝트를 진행하며 이론을 실무에 적용해려 합니다.
또한, 테스트 주도 개발(TDD)이나 디자인 패턴 같이 이론으로만 알고 있던 컨셉또한 구현해보려 합니다.
또한 코드를 작성하며 LLM을 많이 사용하게 되었는데, 객체지향적으로 코드를 짜는것은 LLM이 아직 완벽하게 구상할 수 없다고 생각을 합니다.
따라서 저는 객체지향적인 코드를 작성하도록 노력하여 대체될 수 없는 개발자가 될 것입니다.