우아한테크코스 1주차 미션을 하며 느낀 점과 반성
또한 남은 3주간의 프리코스 미션 또한 기록할 예정이다.
숫자 야구 게임 Github
음... 일단 과제의 난이도는 쉬웠다고 볼 수 있나??
개인적으로 Java로 만들어야 한다는 점이 쉽지는 않았다.
사실 Java가 아니고 다른 언어로 하더라도 쉽지는 않았을 것 같다.
과제를 처음 받았을 때의 자신감과는 다른 결과들이 나왔으니...
처음엔 굉장한 자신감으로 시작했다. 어? 이거 하루면 끝나는거 아닌가... 이런...
Java로 무언가 해본적도 없으면서 새로운걸 배울 생각에 두근두근 거렸다.
기능을 구현하기 전 기능 목록을 작성하라는 얘기를 듣고 일단 기능 목록을 작성했다.
README.md
중간 중간 추가한 README.md 작성하고 처음엔 보지도 않음...
하지만 문제가 있었다. 기능 목록을 작성만 했다는 것이다.
이런~ 코드가 정말 그냥 뭔지 모르게 되었다. 일단 너무 급했다. 뭐가 급했냐?
처음부터 너무 기능을 나누려고 했다. 🤦♂️
게임이니까 Game, Input, View, CommentList 등등 뭐 알지도 못하면서 나눴다.
이렇게 하니 본인의 코드를 본인이 알아보지 못하고 헷갈리는 그런... 상황...
코드 컨벤션과 변수, 메소드 네이밍 또한 엉망이었다.
이때부터 본격적으로 고민하기 시작했다.
순서와 기능에 대해 고민했다. 특히 객체지향은 익숙하지 않은 부분이었다.
그래도 처음이니까 못하는게 맞아 같은 타협이 싫었다.
그림을 그리기도 해보고, 손글씨로 순서를 적어보기도 했다.
나름 필사적이었던 나의 글씨.. 너무 많아서 다 올릴 수가 없다.
이런 부분 이외에도 성능적인 고민을 많이 했다.
Array 와 ArrayList를 사용하는거에 있어서 생각을 많이 한 것 같다.
그냥 ArrayList가 좋으니까 써라! 라는 말은 납득이 안되었다.
이런 부분은 테스트를 해봤는데 이건 다음 블로그 포스팅으로 다루려고 한다.
기존에 작성한 README.md 파일을 수정하기 시작했다.
사실 처음부터 수정한 것은 아니고 엉망인 commit 메시지를 수정하려다가
로컬 코드 전체를 다 날렸다. 심지어 push도 안했던 상황
새벽에 멘탈이 탈탈 털리고 아침 일찍 일어나서 다시 작성했다.
README.md를 보며 기능을 하나 하나 천천히 구현하기 시작!!
컨벤션과 네이밍을 신경쓰고, 기능은 처음부터 나누지 않고 완성 후 나누기로 했다.
그런데 며칠간 작성해오던 코드랑 전혀 다른 코드를 작성하고 있었다.
작성한 코드가 전부 삭제되서 메모장에 딱 하나 남아있는 초기의 메소드와 비교하면
int[] randomNumber () {
int NUM_LENGTH = 3;
int MIN_NUMBER = 1;
int MAX_NUMBER = 9;
while (index < NUM_LENGTH) {
int randomNumber = Randoms.pickNumberInRange(MIN_NUMBER, MAX_NUMBER);
if (!randomNumArr.equals(randomNumber)) {
randomNumArr[index++] = randomNumber;
}
}
return randomNumArr;
}
위의 코드가 처음 작성한 random 메소드이다...
상수랍시고 대문자로 적어놓은 조잡한 코드 그마저도 상수가 아니다.
똑같은 random 숫자를 생성하는 메소드이지만 달라진 점은
private static final int NUMBER_RANGE_MIN = 1;
private static final int NUMBER_RANGE_MAX = 9;
public static List<Integer> getRandomNumber(int numberSize) {
List<Integer> randomNumbers = new ArrayList<>();
while (randomNumbers.size() < numberSize) {
int random = Randoms.pickNumberInRange(NUMBER_RANGE_MIN, NUMBER_RANGE_MAX);
if (!randomNumbers.contains(random)) {
randomNumbers.add(random);
}
}
return randomNumbers;
}
전체 코드는 아니지만 참 많이 달라진 것 같다. 네이밍 부분이 특히 달라진 느낌이 든다.
상수는 상수대로 작성하고... 물론 다른 고수분들이 보기에는 아직 많이 부족하겠지만
이렇게 한 주씩 지나가면 더욱 달라진 코드를 작성할거라 믿는다.
생각보다 일주일은 짧다.
생각보다 일주일은 길다.
기능을 만드는 것에만 몰두하면 놓치는 부분이 너무 많다.
시간이 없다고 생각하지만, 오히려 수정하는 부분이 많아지면 생산성이 떨어진다.
또한 한 번에 여러가지를 하려고 해서도 안된다.
내가 할 수 있는 것을 정하고 그것을 하나씩 해결해 나가자
다음 과제에는 좀 더 세심한 프로그래밍을 하는 것을 목표로 삼아보자
이번 글을 쓰면서 참 부족한 글이라 느낀다.
기록이 얼마나 중요한지 다시 한 번 느꼈다. 코드가 삭제되지만 않았어도 더 비교가 가능했을텐데
이런 변명을 하지 않도록 다음 과제에서는 좀 더 자세한 기록들을 남겨가면서 진행해야겠다.