시작!!
아 기다리고 기다리던 우테코가 시작되었다.

지원 자소서에 있던 내가 하기로 한 공부 약속 중 하나! 아는 것 모르는 것 질문 꼼꼼히 해보기
잘 할 수 있겠지?
10/15
생각보다 간단한 요구사항,,, 이지만 간단하지 않기도 한 요구사항이다.
이왕 꼼꼼하게 전부 질문해보기로 한 이상 요구 사항의 문장도 뜯어보지 않을 이유가 없다고 생각! 한 문장씩 먼저 아는 부분과 모르는 부분을 뜯어보기로 결정!
과제 진행 요구 사항

- 미션은 문자열 덧셈 계산기 저장소를 포크하고 클론하는 것으로 시작한다.
=> 덧셈 계산기 레포에서 포크하기 완료 - 기능을 구현하기 전 README.md에 구현할 기능 목록을 정리해 추가한다.
=> 리드미에 마크 다운 형식으로 잘 정리해놔야할 것 같다. - Git의 커밋 단위는 앞 단계에서 README.md에 정리한 기능 목록 단위로 추가한다.
=> 항상 잘못하던 기능 단위 커밋,,, 이 기회에 해보자! AngularJS Git Commit Message Conventions을 참고해 커밋 메시지를 작성한다.
=> 처음 본 커밋 컨벤션인데 한 번 찾아봤다. 내가 쓰던 깃 컨벤션이랑 좀 달라서 조금 적응이 필요할 것 같다.
잘 모르겠던 점
내가 잘 모르겠는 부분은 scope 에 어떤 내용이 들어갈 지 와 이슈 번호는 어떻게 책정되는 것이다. 또한 신기했던 것은 내 로그를 CHANGELOG.md를 통해 정리해 볼 수 있다는 것이었고, 로그의 성질 별로 나누어 볼 수 있다는 점을 배웠다. 참고1 참고2
질문해보기
- 왜 angular js 컨벤션이었을까?
- 확인해보니 이미 우테코의 커밋 기록들은 angular를 따르는 것을 확인할 수 있었다. 깃 헤드에 scope부분이 있어서 확실히 명시가 잘 되는 느낌이었다. 덕분에 subject 파트가 더 간결해지는 것 같다. 마치 서버에서 getmapping이나 postmapping을 할 때 엔드포인트가 명확해지면 좋은 것 처럼 말이다
기능 요구 사항

기능 요구사항에서 파악할 수 있는 기능에는 크게 두 가지로 생각할 수 있었다.
- 기본적인 덧셈 계산기 만들기
- 예외 처리 하기
먼저 생각 든 것
- 좀 간단한 문제가 아닌가라는 생각을 먼저 했다. 파이썬으로 알고리즘 문제를 주로 풀어봐서 슬라이싱이나 split 같은 함수로 구현하는 데에 문제가 없을 거 같았다.
- 객체 설계 부분에서는 우선
main과calculator객체를 나누고 싶었다.i/o를 관여하는 패키지를 따로 만들면 좋겠다고 생각했다.calculator에서도 메서드를 추출하거나 객체를 나눌 일이 있으면 해봐야겠다고 생각했다. - 객체 간 협업과 책임을 중요시 해야겠다고 느꼈다. 단순한 계산기일 질 몰라도 하는 일(책임)이 다르면 과감하게 나누어져야겠다고 생각했다
잘 모르겠던 것
나름 설계에 대해서 생각은 했지만 확신은 들지 않았다. 추상화 수준을 잘 맞추고 이름을 짓는 것에 신경을 쓰기로 결심했다.
질문해보기
- 구분자를
,이나:으로 한 이유가 있을까? - 커스텀 구분자를 지정하는 기능을 생각한 이유가 있을까? 그리고 그 구분자는 왜
//과 개행문자일까?
이 질문에 대해서는 구현하면서 좀 더 파헤쳐봐야겠다.
프로그래밍 요구 사항

완료된 것
- 자바 21 설치 완료!
- 다른 요구사항 숙지 완료
몰랐던 것
- 자바 코드 컨벤션? -> 있는 지도 몰랐다.
1.1. 임포트 문에서 줄 바꿈이 있으면 안된다는 것
1.2. 라이선스도 클래스에 명시된다니
1.3. 오버로드 코드 위치
1.4. 중괄호는 꼭 쓸 것!
1.5. 그 외 등등 잘 알고 쓰고 있었냐? 라고 하기엔 그냥 쓰고 있던 것들이 많았던,, camp.nextstep.edu.missionutils.Console이게 뭐야 처음 들어보는 라이브러리다. 이 라이브러리만 쓰라니. 신기했다.
질문해보기
- 근데 왜 21인지는 잘 모르겠다. 실제로 17을 많이 썼는데 그 이유는 17정도의 lts를 써도 spring 3 버전대를 코딩하는 데에 어려움이 없었기 때문이었다. 아마도 최신 버전이어서 해당 버전을 설치하라고 지시한 것 같다.
- 왜 하필 저 라이브러리였을가? scanner로 입력하는 것이 아니라 말이다.
