본격적으로 프리코스가 진행되기 전 프리코스에 대해 설명해주시는 메일이 왔다.
과정 주최측에서 그냥 설명없이 진행하셔도 될텐데 친절하게 설명까지 해주셔서 너무 감사했다.(더 길게 있지만 생략할게요)
프리코스는 총 3주간 진행되며 1주에 미션이 하나씩 나온다. 매주 수요일 3시에 미션이 주어지고 다음주 화요일 23:59까지 미션을 구현한 후 github을 통해 제출하면 된다. 그럼 다음 수요일날 저번주 미션에 대한 공통적인 피드백과 다음 미션이 주어지는 식으로 진행된다.
그리고 3개 미션을 모두 제출한 사람만 최종 테스트를 볼 수 있는 자격이 주어진다.
1주차 프리코스 미션은 숫자 야구 게임을 구현하는 것이었다. 그런데 그냥 단순히 구현만 하는 것이 아니라 여러 요구사항을 충족시키면서 구현을 해야했다.
문제 설명과 제출한 코드는 => 여기로 가시면 볼 수 있습니다!
이번 과제를 진행하면서 느낀점이 많았다.
먼저 시작부터 내가 하던 방식이랑 너무 달랐다.
지금까지는 코딩을 할 때 딱히 기능 구현 목록을 작성하고 해본 적이 없다. 그냥 문제가 주어지면 해당 설명을 읽으면서 곧바로 코딩하는 식으로 했어서 처음에 기능 구현 목록을 작성할 때 어떻게 작성하면 좋을까 고민을 꽤 오래했다. 프로그램이 진행되는 순서에 맞게 기능별로 나누어 작성하려고 했다.(좋은 기능 구현 목록인지는 모르겠다ㅠㅠ)
기능 구현 목록을 작성하고 나니 뭔가 전체적인 그림이 보이는 느낌이랄까..?
컨벤션 적용.. 진짜 한 번도 해본 적이 없다. 구글 스타일 가이드 링크를 주셔서 먼저 쭉 정독을 했다.(영어는 항상 잘 안 읽힌다..) 자바 코딩 규칙 이 사이트도 정독을 한 번 했다!
읽고 나니 내가 해오던 방식과 다른 것들이 참 많았다.(for문과 괄호 사이에 한 칸을 띄워야 한다는 것 등) 그래도 하나 하나 코딩 스타일을 맞춰서 해보니 뭔가 전문적인 느낌이 들고 체계적인 느낌이 들어서 좋았다.ㅎㅎ
나의 github에 가서 아무 repository에 들어가서 commit 메세지를 보면 정말 아무런 규칙도 없고, 난장판이라는 생각이 들거라 생각한다. git commit 메세지를 할 때도 규칙이 존재했다.
AngularJS Commit Message Conventions 이 사이트도 올려주셔서 시작전에 한 번 쭉 읽었다.
이런 포맷이 존재했던 것이었다.
이것을 적용하여 이런식으로 작성해보았다
함수는 한 가지 일만 해야한다. 나는 지금까지 한 함수에서 여러가지 일을 진행했던 것 같다. 그래서 이번 기회에 함수가 한 가지 일만 할 수 있게 분리하려고 노력을 많이 했다. 그렇게 하니까 저절로 요구사항인 indent depth가 2이하로 유지가 되었다.(신기)
이번 과제를 진행하면서 상수처리를 어떻게 할까 고민이 많았다. 그러다 상수만 모아놓은 클래스를 만드는 방법도 있다는 글을 봤고 한 번 적용해봤다.
그러다 궁금증이 생겼다. 1) 위의 방식 처럼 한 곳에 상수를 모아놓는 방법이 좋을까? 2) 각 패키지마다 상수 클래스를 따로 만들어서 사용하는 것이 좋을까? 3) 그냥 각 클래스마다 필요한 상수를 선언해서 쓰는 것이 좋을까?
나름 구글링을 해봤지만 답을 찾지 못해서 궁금한 상태이다.
1주차 프리코스를 진행하면서 재밌었다. 체계적으로 코딩해본적이 처음이었는데 기능 구현 목록 작성, 코드 컨벤션, commit 메세지, 함수 분리, 상수 처리 등등 요구 사항을 지키면서 코딩해보니 뭔가 전문적인 느낌이 나서 그런가 재밌었고 성장한 것이 느껴진다. 또 다른 분들이 제출하신 코드를 보니 패키지 분리도 해놓으시고 하신걸 보고 2주차에는 나도 패키지 분리까지 도전해봐야겠다고 생각했다. 1주차 과제 진행 시 학교 마지막 과제와 겹쳐서 시간을 그렇게 많이 쓰지는 못했는데 시간을 더 투자했다면 더 많이 얻어갔을 것이라고 생각한다. 2주차부터는 시간을 많이 투자해서 더 많이 성장하면 좋을 것 같다.