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

 

 

3주차 돌아보기

 

개인적인 일이 많아서 3주차는 4주차가 끝날 무렵 작성하게 되었습니다.

벌써 프리코스의 마지막 주차를 앞두게 되었고, 처음 접해보는 큰 실수로 인한 아쉬움을 가지고 회고를 작성하게 되었습니다.

 

3주차에서 가장 아쉬웠던 점은 아래의 예제 테스트 결과를 해결하지 못한 것이었습니다.

 

가능한 꼼꼼하게 기능을 구현하고, 소감을 작성하고자 하였기에 계속해서 코드를 수정하고 제출 마감 3시간 전에 제출하게 되었습니다.

이번 미션도 무사히 끝났다는 안도와 함께 위에 메세지를 접하게 되었습니다..

빌드 과정에서 오류가 있다는 문구를 읽게 되었고, 코드에 문제가 있다고 파악하여 전체적인 수정을 진행하였으나

제출 기간 내에 문제점을 찾기 못하게 되었습니다..

제출 기간이 끝난 후에 "프로그래밍 요구 사항에서 달리 명시하지 않는 파일, 패키지 이름을 수정하거나 이동하지 않는다.”라는 프로그래밍 요구사항이 떠오르게 되었고, main 기능을 담당하는 Application이 view 패키지로 이동한 것을 확인하게 되었습니다.

당시에는 위 결과로 3주차를 끝내게 된 것이 정말 우울하였지만..

실수도 경험이라 생각하고 긍정적인 생각을 가지고 4주차를 진행하였습니다

 

1,2주차와 마찬가지로 3주차 공통 피드백 메일을 받게 되었습니다.

2주차에 대한 코드 리뷰에 대한 부탁글을 남겼으나, 1주차처럼 많은 분이 작성해주시길 기대한 것과는 다르게 

한 분도 리뷰를 남겨주지 않았습니다.. ㅠ

다른 분들은 어떻게 코드를 작성했나 궁금했고, 공통 피드백을 확인과 함께 여러 코드를 접하게 되었습니다.

 

이전 미션의 개선점 찾기

 

공통 피드백과 다른 분들의 코드를 확인하면서 중요하다고 생각하는 피드백을 뽑아서 코드를 수정하게 되었습니다.

 

1. README.md 상세히 작성하기

 

해당 프로젝트에 대한 설명과 기능 구현 작성이 부족하다고 느꼈습니다.

코드에 대한 기능을 주로 작성하였는데, 어떤 기능을 하는지와 명확한 설명을 작성하는 것이 좋아보입니다.

 

2. 기능 목록 재검토하기

 

"기능 목록에 함수 설계와 구현을 너무 상세하게 적지않는다"라는 피드백을 접하게 되었습니다.

그 이유는 반환값 등은 언제든지 변할 수 있으며, 구현해야 할 기능 목록을 정리하는 데 집중하는 것이 좋다고 하였습니다.

정상적인 경우와 예외적인 상황에 대한 기능 목록을 정리하는 것이 좋을 것 같다는 생각을 하게 되었습니다.

예외 상황을 한 번에 정리하는 것이 아닌 기능을 구현하면서 계속해서 추가해 나가야 하는 것이 좋을 것 같습니다.

 

3. 구현 순서도 코딩 컨벤션이다.

 

"클래스는 프로퍼터, init 블록, 부 생성자, 메서드, 동반 객체 순으로 작성한다." 라는 피드백을 확인하였습니다.

코틀린 코드 컨벤션을 지키면서 코드를 작성하려고 노력하였지만, 분명히 완벽한 코드는 없을 것 같다는 생각이 들었습니다.

이 피드백을 항상 생각하고 기능 구현을 하면서, 테스트를 작성하면서 등 꾸준하게 코딩 컨벤션을 준수하는지 확인해야 할 것입니다.

 

4. 변수 이름에 자료형은 사용하지 않는다.

 

이번 피드백에서 중요한 부분이라고 생각하였습니다.

List나 String과 같은 자료형, 자료 구조를 변수명에 사용한 경우가 꽤 많았습니다. 

해당 피드백을 참고하여 4주차 미션에는 주의하였습니다.

 

5. 테스트 작성 의미 생각하기

 

기능 점검만이 목표가 아닌 나의 코드에 대한 피드백을 받을 수 있다는 내용을 접하게 되었습니다.

큰 단위의 테스트가 아닌 작은 단위의 테스트로 작게 나누는 것이 좋으며, 핵심 기능에 가까운 부분부터 작게 테스트를 만드는 것을

권장하였습니다. 좀 더 구체적이고 폭넓은 테스트를 작성하는 것이 좋을 것 같습니다.

 

이번 미션을 통해서 테스트 코드를 작성하는 부분에서 부족한 점이 많다고 느끼게 되었습니다.

 

추가 요구사항 점검

이전 미션에서 놓친 부분과 추가 요구사항은 아래와 같이 정리하였습니다.

 

 

체크 리스트를 작성하여 중요하다고 생각한 부분을 제출 전에 점검하는 시간을 가지게 되었습니다.

이번 미션에서는 Enum 클래스를 활용하는 것이 중점으로 작용할 것 같습니다.

 

기능 구성하기

기능 목록은 게임 진행 준비, 게임 진행, 게임 종료 총 3가지 파트로 나누어서 작성하였습니다.

 

게임 진행 준비에는 사용자 입력에 따른 예외 상황을 중점적으로 작성하였습니다.

가능한 예외 목록을 정리하고, 예외 상황에 따른 대처 방법을 기능으로 작성하였습니다.

 

게임 진행에는 로또 번호를 생성하고, 각 생성 내역에 따른 기능 구현을 중점적으로 다루게 되었습니다.

Enum 클래스와 Map을 활용한 데이터 관리를 적용하게 되었습니다.

 

게임 종료는 출력의 기능을 중점적으로 다루게 되었습니다.

당첨 내역에 따른 수익을 카운트하고, 총 수익률을 계산하여 출력하는 기능을  작성하였습니다.

 

 

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

 

 

리뷰

벌써 3주차, 그리고 리뷰를 작성하는 시점에서 4주차까지 프리코스 과정을 마무리하게 되었습니다.

좀 더 잘하고 싶은 마음에 계속 수정하다보니 마감일까지 3주차 과제를 진행하였고, 실수를 남기는 아쉬움을 가지게 되었습니다.

첫 미션에서는 커밋 메시지 관리에 대한 실수를 겪고, 3주차까지 2번의 큰 실수를 경험하였습니다.

프로그래밍 요구사항을 안일하게 생각하였고, 기능 중심으로 과제를 생각한 것이 원인이었습니다.

 

3주차를 거치면서 코드 컨벤션과 테스트 코드 작성에 집중하면서 개발 실력이 많이 향상된 것 같습니다.

배울점이 많고, 미션을 진행하면서 즐거운 시간을 보내며 성장하고 있는 것 같아서 뿌듯합니다..!