[우테코] 프리코스 2주차 회고

@donghoonyeom · November 02, 2023 · 7 min read

1

2주 차 온보딩 github

[들어가며]

저번주 1주차 과제를 제출 후, 많은 후회가 몰려왔다.

가장 먼저 우테코에서 제시한 2가지의 테스트는 통과할 수 있었다. 하지만 하나의 숫자의 힌트를 얻을 경우 하나의 볼 또는 스트라이크가 출력돼야 한다고 되어 있지만 내 코드에서는 볼과 스트라이크가 하나만 있어도 0 볼, 0 스트라이크와 같이 힌트가 필요하지 않은 부분도 함께 출력된다.

미션 요구사항도 제대로 읽지 않고, 클린코드나 리펙토링, 테스트코드에 관심이 집중되어 있던 모습이 정말 바보같이 느껴지는 하루였다. 이번 프리코스를 포기해야 하나 고민도 해봤지만 아직 남은 프리코스 미션과 시간이 남아있었기도 하였고,

정말 우테코가 정말 간절하기에 계속 진행해 보기로 했다. 진행하며 2주차 미션부터는 요구사항에 대해 더 명확히 분석해야겠다는 다짐을 하게 된 경험이었다.

[미션을 진행하기 전 가장 먼저 한 일]

일단 저번 미션도 그랬지만 역시 처음 해보는 내용이었다. 저번주 반성 내용을 상기하며, 가장 먼저 한 일은 1주차 공통 피드백을 읽어보며 내가 어떻게 흡수해야 할지 생각해 보는 시간을 가졌다.

같은 실수를 반복하지 않기 위해 README에 적혀있는 요구사항을 빠짐없이 체크하려고 노력했다. 그리고 야구게임에 대해 더 고민해보고 싶어 숫자 야구 피드백강의를 시청하였다.

시청하면서 클래스 변수, 인스턴스 변수, 상수에 대해서도 조금 더 쉽게 이해할 수 있었고, 멀게만 느껴졌던 객체지향 프로그래밍에 조금 가까워질 수 있었다.

[테스트 코드 작성]

이번주차의 목표는 함수를 분리하고, 각 함수별로 테스트를 작성하는 것이라고 한다. 가장 먼저 아직 테스트코드를 작성해 본 적이 없어서 메일에 안내되어 있는 대로 StringTest를 확인하였다.

하지만 문제가 StringTest 코드를 봐도 완전히 이해하긴 어려웠다. 그래서 구글링, gpt를 통해 테스트코드에 대해서 공부를 진행했다. 테스트 코드를 먼저 작성하고 그다음에 실제 코드를 작성하는 개발 방법인 TDD로 코드를 작성해야 하나 고민해봤지만, 아직 테스트 코드도 작성하지 못하는데 먼저 작성한다는 일은 막막하다는 느낌이 들어서 기능 구현을 먼저 하고, 테스트 코드를 작성해 보았다.

완전한 테스트코드를 작성한 것은 아니지만 내가 할 수 있는 선에서 작성하도록 노력해 보았다. private 메서드를 테스트할 때 오류가 발생하여 public 으로 메서드를 변경하려고 했는데 그것은 권장하지 않는 방법이라고 한다. 그래서 Wrapper 클래스를 만들어 캡슐화하여 테스트를 진행하게 되었다. Wrapper 클래스를 통해 유지보수성이 좋아졌고, 결합도도 낮아졌다고 느낄 수 있었고, mock 객체를 사용해서 테스트도 할 수 있었다.

[메서드 분리]

이번 미션에서는 1주차 미션에서 적용하지 못했던 MVC패턴을 적용해 보았다. 가장 먼저 controller, model, view 3개의 디렉터리를 생성 후 클래스를 알맞게 만들려고 힘썼다. 그리고 메서드 분리도 최대한 진행해 보면서 메서드 1개에 하나의 작업만 하도록 만들려고 노력해 봤는데, 1주차에 비해 확실히 더 쉽게 나눌 수 있었다.

아직 익숙하진 않았지만 확실히 적용하면서, 각 구성 요소가 독립적으로 동작하기 때문에 각 부분을 수정하거나 확장할 때 더 편했고, 가독성이 많이 좋아진다는 걸 느낄 수 있었다.

[커밋 메시지를 의미 있게 작성하기]

커밋 메시지는 지금까지 헤더만 작성하는 버릇이 있었는데 우테코에서 제공된 커밋 메시지 컨벤션문서를 확인하고 조금 더 의미 있는 커밋메시지를 작성하려고 노력하였다. 기능별로 커밋하면서 어떤 메서드인지 작성하는 노력 하면서 동시에 리팩토링을 진행할 때는 왜 이렇게 바꾸었는지 고민하면서 커밋메시지를 작성하려고 노력하였다.

아직 익숙하진 않지만 계속 컨벤션을 유지하면 협업이나 누군가 내 코드를 볼 때 확실히 도움 받을 수 있을 거라고 생각한다.

[부족하다고 생각하는 점]

일단 테스트 코드가 매우 중요하다고 생각하는데, 이번주 미션에선 아직 TDD방법론을 적용해보진 못했다.

다음 주 미션 때는 적용하기 위해 기능별 테스트코드를 먼저 작성 후 기능에 맞게 동작하는지 확인하면서 코드를 작성해보려고 한다. 그러기 위해서는 확실히 테스트 코드 작성법에 대해서 더 공부해야겠다고 느꼈고, 다음 주는 시간 분배를 조금 더 신경 써서 해야겠다고 생각했다.

@donghoonyeom
꾸준히, 의미있는 학습을 기록하기 위한 공간입니다.