각종 후기/우아한테크코스

우아한 테크코스 3기 프리코스 1주차 미션 수행 후기

제이온 (Jayon) 2020. 12. 6.

안녕하세요? 코딩중독입니다.

 

 

11월 25일에 프리코스 1차 미션을 안내하는 메일이 왔습니다. 프리코스 진행 방식에 대한 설명이 있었고, 특히 과제를 제출하는 방법을 따로 git 링크까지 첨부하여 친절하고 상세하게 알려주셨습니다.

 

자세한 내용은 이곳을 참조하시면 되겠습니다. 저는 Git의 개념이 별로 없었기때문에 이 문서에서 굉장히 많은 도움을 받았습니다. 그리고 앞으로도 git을 많이 사용할 것이라 생각해서 최근에는 git 관련 포스팅을 작성하고 있습니다. 관심있으신분은 왼쪽에 Git 카테고리를 보시길 바랍니다.

 

서론이 길었군요. 바로 미션 주제부터 설명드리겠습니다.

 

 

1주차 미션 주제

우아한 테크코스 2기 1주차 때와 마찬가지로 3기 1주차도 '숫자 야구 게임'을 구현하는 것이었습니다.

 

아래는 프로그램 동작 과정입니다.

 

 

 

 

게임이 시작되면, 유저는 세 자리 난수를 맞혀야 합니다. 하지만 100부터 999까지 수를 찍어서 맞히기는 아주 어렵기때문에 힌트를 제공합니다.

 

유저가 입력한 수와 난수를 비교하여 같은 자리에 같은 숫자가 있는 경우를 스트라이크, 다른 자리에 숫자가 있는 경우를 로 정합니다. 가령, 유저가 입력한 수가 234이고, 난수가 982라면 1볼인 것입니다.

 

위 과정을 프로그램으로 구현하면 됩니다.

 

 

힘들었던 점

사실, 구현의 난이도는 낮은 편입니다. 간단한 브루트포스 기법을 통해 두 수를 비교하면 되고, 그에 따른 힌트를 출력하면 끝이죠.

 

하지만, 그 외적인 부분에서 힘들었습니다. 그 요소를 나열해 보겠습니다.

 

 

(1) git의 미숙함

저는 학교 전공 팀플에서 잠깐 add, commit, push, pull 정도만 사용하였지, 정확히 어떻게 작동되는지는 잘 몰랐습니다. 가령, commit만 바로 수행하면되는 것이지, 왜 add를 한 이후에 commit을 사용하는지는 알지 못하였습니다.

 

그래서 개발 외에 시간을 들여서 git을 공부하려고 노력을 많이 하였습니다. 혹시나 다음 4기 때 이 포스팅을 보시는 분이라면, 프리코스 전에 반드시 git 기초를 학습하셨으면 좋겠습니다.

 

 

(2) commit의 미숙함

(1)번에서 이어지는 내용인데, 사실 이 부분이 가장 애를 먹었습니다. "엥? 그거 그냥 커밋하면 되는거 아니냐?"하실 수 있는데 기능 별로 commit을 어떻게 할지 고민하는 과정을 저는 처음하였기때문에 꽤 힘들었습니다.

 

또, commit 메시지를 작성하는 방법을 익히는 데에도 시간이 걸렸습니다. 우테코에서는 commit 메시지 작성하는 링크를 알려주셨는데, 이곳에서도 확인하실 수 있습니다. 사실, 아직까지도 어떻게 commit 메시지를 작성하는 것이 좋은지는 여전히 고민 중이지만, 점점 쓰면서 실력이 늘지 않을까 생각하고 있습니다.

 

 

(3) 프로그램의 제약 조건

프리코스를 진행하면서 indent depth라는 용어를 처음 들었습니다. 이 용어는 예시로 드는 것이 이해하기 쉬운데, while문 안에 if문이 있으면 indent depth는 2입니다. 즉, 하나의 메소드 안에서 중첩된 중괄호의 수 중 가장 큰 수가 indent depth가 되는 것이죠. 중괄호가 겹쳐질 수록 가독성이 떨어지기때문에 이러한 제약을 둔 것 같습니다.

 

다음으로, 삼항 연산자 금지입니다. 사실, 저는 PS를 하면서 짧은 코드를 위해서 삼항 연산자를 가끔씩 사용하곤했는데 이것도 가독성을 이유로 쓰지 말라고 명시한 듯 합니다.

 

 

(4) 하나의 메소드는 하나의 일만 하도록 해라

가장 핵심적인 부분입니다. 하나의 메소드는 여러 가지 일을 하지 말고 가능하면 하나의 일만 수행하도록 짜야 합니다. 저는 기능을 구현하면서 어떻게 하면 깔끔하게 메소드를 구현할 수 있을지 노력을 많이 기울였습니다.

 

 

(5) 변수와 메소드 이름을 짓는 방법

남들이 보았을 때, 주석 없이도 변수와 메소드가 무슨 일을 하는지 잘 전달할 수 있도록 이름을 짓는 것이 꽤나 골때렸습니다. 지금으로써는 적당히 제 나름대로 고민하여 이름을 지었지만, 지금 구매한 '클린코드'책을 읽으면서 명명 방식을 배워보아야 겠습니다.

 

 

(6) README.md 작성

무슨 프로그램인지 알려주는 문서인 README.md를 살면서 처음 작성해 보았습니다. 저는 md 문법도 잘 몰랐고, 일단은 그냥 워드같은 곳에 글을 쓰는 것처럼 적당히 썼습니다. 시간이 되면 md 문법을 공부하여 좀 더 생동감 넘치는 README.md를 작성해 보고 싶습니다.

 

 

(7) 대학교 과제, 시험

진정한 외적 요소죠 ㅎㅎ.. 저는 대학교 2학년이라 학기 중에 있습니다. 그래서 전공이나 교양 과제를 수행하여 제출하고, 시험 공부도 같이 할 수 밖에 없었습니다.

 

제가 시간이 많았다면, pr에서 다른 사람 코드도 유심히 살펴보고 이번에 산 개발 도서를 읽어볼텐데 그러지 못해서 아쉬움이 남습니다.

 

 

정리

프리코스 미션은 매 주 수요일 오후 3시 경에 공지가 되고, 그 다음 주 화요일 밤 12시전까지 제출을 해야 합니다. 저는 주말 중으로 끝내서 제출을 하였고, 상당히 유익한 시간이 되었다고 생각합니다. 그리고 부족한 점을 많이 발견하게 되어 어 우테코가 떨어지더라도 어떤 공부를 할지 방향을 잡을 수 있었습니다.

 

제가 구현한 야구 게임 코드는 이곳에서 확인하실 수 있습니다. 비록 부족한 부분이 많지만, 제 코드를 통해 도움을 얻어가실 수 있다면 기쁠 것 같습니다.

 

글을 이만 줄이고, 그 외에 궁금한 점이 있다면 편하게 댓글로 남겨주셔도 괜찮습니다 ㅎㅎ

댓글

추천 글