Published on

우아한테크코스 프리코스 4주차 회고

Authors
  • avatar
    Name
    ywj9811
    Twitter

우아한테크코스 프리코스 4주차까지… 총 한달간의 프리코스가 끝났다.

wtc4

마지막 주차의 시작

마지막 주차인 만큼 이번에는 목표를 세우고 시작할 때의 나보다 훨씬 발전된 코드를 작성하고 싶었다.

우선 마지막 주차의 미션은 java-bridge라는 오징어 게임의 다리 건너는 게임을 구현하는 미션을 받았다.


마지막 주차에 대한 나의 목표

  1. 비즈니스 로직과 UI 로직을 분리하도록 하자
  2. enum을 활용해 보도록 하자
  3. 지난 3주차에서 한 실수를 반복하지 말자
  4. 그리고 3주차 까지 발전해온 모습에 더해서 이번 주차의 요구 사항을 모두 만족해 보도록 하자

이렇게 3가지를 가지고 시작했었다.


이번 주차는 마지막 주차이다 보니 쓸 말이 많을 듯 하여 문제에 대한 상세한 설명은 링크를 남기도록 하겠다.

https://github.com/ywj9811/java-bridge

이번 미션을 수행하던 과정에 대해서 이야기를 해보도록 하자.

우선 이번 미션의 경우 많은 클래스가 주어졌고 이를 활용해서 작성할 수 있어야 했다.

나는 이 부분이 오히려 어렵게 다가왔다.

처음부터 내가 작성을 하는 것이 아닌 다른 코드에 추가를 하기 위해서는 그 코드가 어떤 것을 원하고 있는 코드인지 파악을 해야 편하게 작성할 수 있기 때문이었다.

근데 이 주어진 클래스를 잘 활용을 한다면 첫번째 목표를 달성할 수 있을 듯 하였다.

InputView 클래스와 OutputView 클래스, BridgeGame 클래스, BrdigeMaker 클래스, BridgeRandomNumberGenerator 클래스 이렇게 5개의 클래스가 주어졌다.

하지만 이름을 통해서 대부분의 의미를 파악할 수 있었다.


  1. InputView 클래스 : 입력 값을 처리하는 클래스
  2. OutputView 클래스 : 출력 값을 처리하는 클래스
  3. BridgeGame 클래스 : move, retry 즉 게임에서 핵심 로직을 담당하면 될 듯 한 클래스
  4. BridgeMaker 클래스 : 말 그대로 생성하는데 1, 0으로 이루어진 다리를 우리가 사용할 다리로 재 생성해주는 클래스
  5. BridgeRandomNumberGenerator 클래스 : 0, 1 둘 중에 랜덤으로 값을 리턴해주는 클래스

나는 이렇게 의미를 정리하고 사용을 하였다.

물론 코드를 작성함에 있어 기능 요구 사항과 클래스에 대한 제약이 어려움을 가져오기도 하였으나 오히려 이를 통해서 나의 첫번째 목표였던 UI와 비즈니스 로직을 분리하는 것에 도움이 되지 않았을까 생각이 든다.

어떻게 만들어서 사용하면 좋을지 약간의 팁을 받은 느낌이었다.

그리고 이번 주차에서 enum을 활용을 하겠다는 목표를 가지고 있었는데 나름대로 활용은 하였으나 약간의 아쉬움은 남는다.

공부도 해보고 나름 활용을 해보기는 하였다.

출력문을 하나의 enum에 정리하여 사용하기도 하였고 예외 문구 또한 enum에 정리하여 사용하기도 하였다.

하지만 enum에 대한 다양한 활용법을 보았는데 따라서 활용하기에 어려움을 느껴 더 효율적인 방법으로 활용할 수 있지 않을까 하는 아쉬움이 남았었다.

⚠️지난 3주차에서의 실수를 반복하지 말자

지난 3주차에서 나는 예외 처리에 대한 실수를 했었다.

그 문제를 해결하기 위해서 정말 많은 시간을 투자했었고 많은 고민을 했지만 해결하지 못했고 그에 대한 기간이 끝난 이후에 해당 문제를 해결했었다.

그에 대한 자료는 3주차에서 모두 다루고 있을 것이다.

그런 문제를 크게 겪고 나니 마지막 주차에서는 시작하자 마자 마음속에서 해당 문제를 정리하고 시작하게 되었었다.

이번에는 예외 처리를 위해서 중간에 예외를 던진다는 가정 하에 최상위 main에서 try-catch를 통해 예외를 처리하도록 하였다.


그 외에 이번 주차에서 요구 받은 메소드의 길이를 10줄 넘지 말기, 파라미터 3개까지만 받도록 하기 이 부분에 대해서는 상당히 흥미로웠고 이를 지키기 위해서 리팩토링 하는 과정이 재미가 있었다.

또 메소드가 10줄을 넘지 않기 위해서 메소드 내부에서 기능별로 분리를 해야 했는데 이 과정에서 자연스럽게 메소드가 하나의 기능만 가지도록 하는 목표이자 요구 사항 또한 자연스럽게 만족이 되는 모습이 보이기도 했다.

물론 공부를 하며 느낀 점이 메소드 하나당 하나의 기능만 가지고 있을 수 있도록 작성하려 하였지만 그게 완벽하지는 못하다는 느낌이었다.

wtc4fin

마지막 주차를 마치며

이번 주차까지 마치게 되면 프리코스 전체 한달이 끝나게 된다.

이 한달이라는 시간 동안 나는 많은 것을 알 수 있었고 코드를 바라보는 시각이 넓어졌다.

나는 그동안 하나의 메소드에 하나의 기능만을 넣어주려 노력하지 않았고 메소드의 길이를 짧게 하기 위해서 그다지 노력하지 않았다.

또 enum의 장점을 모르기도 했으며 else와 같은 예약어를 사용하고 삼항연산자를 사용하는 등 크게 생각하지 않던 부분에 대해서도 주의를 할 수 있게 해주는 시간이었다고 생각을 한다.

이렇듯 그동안 크게 생각하지 않던 부분에 대해서 생각할 수 있게 환기를 시켜주었고 앞으로 코드를 짜며 생각할 수 있는 키워드를 던져준 한 달이었다고 생각한다.

그리고 프리코스를 지내며 우연치 않게 스프링 부트 코드를 마주할 일이 생겼는데 예외 처리를 위해서 enum을 사용하는 모습이 눈에 들어오고 예외 처리를 해주는 부분이 눈에 들어오는 등 짧은 기간이었지만 조금 더 넓은 시야를 가지게 해준 기간이었다고 생각한다.

물론 이전에도 우테코에 꼭 가고 싶다…라는 생각을 가지고 있었다.

하지만 한달이라는 시간 동안 프리코스를 경험하며 우테코라는 교육을 꼭 경험하고 싶다는 생각이 엄청나게 강해졌고 지금은 이전보다 배로 더 간절해 졌으며 정말 더 깊게 더 많은 내용을 배워보고 싶다는 생각이 든다.

한달동안 던져주신 키워드 만으로 나에게 큰 성장을 가져다 주는 모습을 확인하니 정말 너무 가고 싶다. 🙏🙏🙏


앞으로 나는 무엇을 할 것인가

wtcFinal

프리코스의 마지막을 알리는 메일을 받았다.

나는 중간에 프리코스가 끝난다면 갑자기 그동안 몰입했던 무언가가 사라져 공부의 길을 잃을까 걱정했던 적이 있었다.

하지만 막상 끝이 나니까 그 걱정과는 다르게 앞으로 나의 계획을 하나 둘 세울 수 있었다.

여기에는 마지막을 알리는 이메일이 도움이 되었다.

우선 잠시 주말까지만 쉬는 시간을 가질 생각이지만 그 기간이 지난다면 아래와 같이 공부를 해나갈 것이다.

  1. 그동안 2주차 부터 4주차까지 다시 한번 구현을 해볼 것이다.
  2. 그와 동시에 그 당시에는 구현하느라 급급 했다면 왜 이런 방식을 사용하기를 권장 하는 것인가에 대한 공부를 해볼 생각이다.
  3. 그리고 최종을 갈 수 있을지는 모르지만 알고리즘에 대해 익숙해지기 위해서 드문 드문 풀고 있던 백준과 프로그래머스를 다시 한번 집중해서 풀어보는 시간을 가져보고자 한다.

물론 동시에 이전에 해오던 공부도 이어서 진행할 것이며 14일 까지 떨리지만 그와 동시에 즐거운 시간을 지내볼 생각이다.

재밌던 한달 이었다고 생각한다!