[우테코 6기] 프리코스 4주차 회고

 

4주차 돌아보기

우테코 4주차를 끝으로 최종 제출을 완료하였습니다.

긴 프로세스에 걱정하기도 하였지만, 재밌고 많이 배우는 시간이 된 것 같습니다.

대표적으로 깃 커밋 메시지 활용 방법과 코틀린 컨벤션을 많이 배우게 되었습니다.

 

아쉬운점은 별도의 스터디 활동을 하지 못한 것이었습니다.

디스코드에서 스터디 활동을 모집하는 글을 봤는데,

다른 일정이 곂치거나 기술스택이 다른 등의 문제로 스터디를 구하기 힘들었습니다.

 

직접 스터디를 주도하거나, 최종 테스트를 준비하는 프로세스에 참여하는 등의 방법을 찾고 있습니다.

 

이번 미션에서는 다행히 별도의 실수를 하지 않게 되었습니다.

이전 미션에서 예기치 못한 오류 문구와 첫 미션에서 커밋 메시지를 관리하지 못하는 등의 큰 실수를 하였는데요.

과제용 프로젝트가 아닌 실제 기업에서 적용하는 프로젝트였다면, 실수가 큰 문제로 이어질 수 있다는 생각을 하였습니다.

과제 전형은 주어진 프로그래밍 요구사항과 기능 요구사항을 만족하는 프로세스를 통해 성장하는 과정이라고 생각합니다.

덕분에 4주차 과정을 통해서 큰 성장을 이룰 수 있었고, 실수를 줄이는 습관을 얻을 수 있었습니다.

 

이전 미션의 개선점 찾기

1. 프로그래밍 요구사항 준수하기

 

프로그래밍 요구사항의프로그래밍 요구 사항에서 달리 명시하지 않는 파일, 패키지 이름을 수정하거나 이동하지 않는다.”

관리할 클래스가 많아지면서, 패키지로 관리하면 좋겠다는 생각에 파일의 패키지를 이동하다 실수를 하게 되었습니다.

제출 기간이 지난 후에 Application 파일의 패키지가 이동 된 것을 알게 되었습니다.

지난 일에 대하여 돌아보게 되었으며, 실수 역시 실력이라 생각하며 발전할 점을 생각하게 되었습니다.

 

2. 비즈니스 로직과 UI 로직을 분리하기

 

가능한 비즈니스 로직과 UI 로직을 분리하여 작성하였습니다.

 

"현재 객체의 상태를 보기 위한 로그 메시지 성격이 강하다면 toString()을 통해 구현하라"

"View에서 사용할 데이터라면 getter 메서드를 통해 데이터를 전달하라"

 

위와 같은 피드백을 참고하여 코드를 작성하려 노력하였습니다.

 

3. 연관성이 있는 상수는 전역으로 선언하는 대신 enum 활용하기

 

이전 미션에서 연관성 있는 상수는 enum 클래스를 활용하여 분류하였습니다.

하지만 코드를 리뷰하는 과정에서 다시 살펴보니, 너무 enum 클래스를 남용하지는 않았는지 생각하게 되었습니다.

단순히 상수로 작성해도 되는 부분을 enum 클래스를 활용한 부분이 있었습니다.

 

4. 객체는 객체스럽게 사용하기

 

우테코에서 남겨준 블로그 포스팅을 꼼꼼히 살펴봤습니다.

getter를 무조건 사용하지 않는 것이 아닌 외부에서 변경하지 못하도록 하는 것이 좋다는 피드백을 확인하였습니다.

 

5. 필드 수를 줄이기

 

가능한 필드의 수를 줄이려고 노력하였습니다.

하지만 불필요한 필드가 없는지, 필드의 수를 최소화 할 수 있는지를 확인하는 과정이 필요할 것 같습니다.

 

6. 테스트 코드도 코드

 

이번 피드백에서 가장 깊게 생각하게 되는 부분이었습니다.

테스트 코드에 반복적으로 사용하는 부분이 있었으며, 중복값을 줄이고 리팩터링을 통해 개선이 필요했습니다.

 

7. 단위 테스트하기 어려운 코드를 단위 테스트하기

 

단위 테스트가 가능하게 리펙터링하는 것이 중요합니다.

 

추가 요구사항 점검

이번 미션에서 추가 된 요구사항을 점검하였습니다.

입출력을 담당하는 코드를 하나로 관리하였는데, 이번엔 분리하여 작성하게 되었습니다.

 

이벤트 요구 사항 정리 

총 4가지 요구 사항을 정리하였습니다.

요구사항은 유저 플로우가 아닌 이벤트별로 기능을 분리하여 작성하였습니다.

 

크리스마스 디데이가 적용되는 이벤트를 분류하고, 크리스마스 디데이 외의 할인 이벤트를 분류하였습니다.

이 후에 해택 금액에 따른 이벤트 배지의 기능을 정리하고, 고객 안내 멘트의 주의사항을 추가로 작성하였습니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

개발 요구사항 정리

 

개발 요구사항을 아래와 같이 정리하였습니다.

개발 요구사항은 기능적인 부분과 예외 처리에 대한 내용을 중점으로 적용하였습니다.

상수와 메시지 관리 등을 중심으로 작성하여 기능 요구사항에 빠진 부분이 없게 정리하여 작성하였습니다.

 

 

 

사용자 플로우에 따른 구성

마지막으로 사용자의 플로우에 따른 기능 목록을 정리하였습니다.

게임 시작 - 주문 받기 - 할인 전 단계 - 해택 내역 검사 - 이벤트 결과 발표를 순서로 작성하였습니다.

사용자가 게임을 시작할 경우, 입력을 받고 계산을 진행하여 출력하는 부분으로 플로우를 지정하였습니다.

앱을 사용하는 실제 사용자처럼 순서대로 내용을 정리하였습니다.

 

 

위와 같이 핵심 기능에 대한 체크 리스트를 작성하여, 빠진 기능을 점검하는 방식을 사용하였습니다.

 

테스트 코드 체크리스트

이전 미션에서 테스트 코드에 대한 아쉬움이 남았었습니다.

이번 미션에서는 테스트 코드를 도메인 단위 테스트로 정확하게 구현하고자 하였습니다.

따라서 아래와 같이 테스트 코드에 대한 체크리스트를 작성하여 도메인 단위 테스트를 수행하고자 하였습니다.

 

 

리뷰

마지막 리뷰를 작성하면서 4주차 프리코스 과정을 회고하게 되었습니다.

좀 더 잘하고자 하는 마음에 아쉬움이 컸고, 성장할 수 있었음에 감사했습니다.

 

과제 전형 이후에 이슈 관리와 프로젝트 생성, pr에 이슈를 연결하는 방법등을 공부하게 되었습니다.

이제는 마지막 테스트에 대비하여 새로운 프로젝트를 생성할 예정입니다.

해당 프로젝트에서는 4주간의 과정을 새로 학습한 깃 관리 방식으로 적용해보려 합니다.

 

즐겁게 배우면서 성장할 수 있는 경험을 하게 되어 정말 좋았습니다.