신청 폼을 제출 한 이후, 4월 12일 화요일에 1주차 미션 메일이 도착했다.
넥스트스텝을 아는 사람이라면 다들 익숙할 '숫자야구게임' 구현이 1주차 미션이었다.
요구사항은 기능 요구사항, 프로그래밍 요구사항, 과제 진행 요구사항 세 가지로 분류되어 있고, 이를 만족하는 코드를 작성하는 것이 미션이었다.
또한 기능을 구현하기 전에 먼저 기능 목록을 만들고, 기능 단위로 commit 하는 방식으로 진행하라고 하였다.
기능 요구사항이나, 과제 진행 요구사항은 경력 개발자라면 크게 어려울 내용은 아니었다.
하지만 프로그래밍 요구사항은 그동안의 코딩 스타일을 바꿔야 할 만큼, 새로운 내용들이 많았다.
프로그래밍 요구사항은 다음과 같았다.
- 자바 코드 컨벤션을 지키면서 프로그래밍한다
- indent(인덴트, 들여쓰기) depth를 2가 넘지 않도록 구현한다. 1까지만 허용한다.
- 자바 8에 추가된 stream api를 사용하지 않고 구현해야 한다. 단, 람다는 사용 가능하다.
- else 예약어를 쓰지 않는다.
- else를 쓰지 말라고 하니 switch/case로 구현하는 경우가 있는데 switch/case도 허용하지 않는다.
- 함수(또는 메소드)의 길이가 10라인을 넘어가지 않도록 구현한다.
- 함수(또는 메소드)가 한 가지 일만 잘 하도록 구현한다.
해당 요구사항과 더불어 도메인 로직에 단위 테스트를 구현해야 하는 부분이 있었다.
TDD를 접한 지 얼마 안 되었던 시점이라 어떤 식으로 테스트 케이스를 작성하는 것이 실질적으로 도움이 될지에 대해 감이 잘 오지 않았다.
그래도 TDD는 자료가 정말 많아서 실제 적용하기 전 실습을 하면서 금방 익히기도 했고, 테스트가 통과할 때마다 성취감도 컸다.
새로운 것을 배우는 게 이렇게 재밌다니! 실로 오랜만의 즐거움이었다.
코드 컨벤션의 경우 인텔리제이의 자동 정렬 기능을 사용하였는데,
마감일인 월요일에 인텔리제이가 xml 파일로 지정한 포맷에 맞춰 정렬 기능을 적용할 수 있는 것을 알아 부랴부랴 우테캠의 코딩 컨벤션 파일을 받아 적용하고 리팩터링을 진행했다.
그 덕분에 2주차 미션과 우아한 스터디의 wordle 미션을 진행하면서 코딩 컨벤션에 대한 걱정은 사라졌다. 굳굳b
참고 : https://creampuffy.tistory.com/128?category=986887
사실 인덴트나 else를 사용하지 않는 것이 코드 가독성에 크게 영향을 줄 것이라고는 생각하지 않았었는데, 막상 미션을 진행하면서 요구사항을 지키다 보니 확실히 깔끔해지는 부분이 보였다.
미션은 끝났지만 프로그래밍 요구사항들을 실제 현업에서도 적용해봐야겠다고 느꼈다.
1차 미션을 완료하고 나니 그동안 구현해왔던 코드와는 다른 느낌이 들면서 2차 미션에 대한 근거 없는 기대감과 자신감이 생겨났다.
하지만 막상 2차 미션을 하면서 새로운 난관에 정착하게 되었는데...
(는 2주 차 미션 회고로 이어집니다)