[우테코] 프리코스 4주차 다리 건너기 미션
4주차 미션 후기
![[우테코] 프리코스 4주차 다리 건너기 미션](/image/tech.png)
지난 주에 우테코 프리코스가 끝났다. 한주동안 푹 쉬었던 것 같다. 4주간 나름 몰입을 했다고 생각한다. 그만큼 얻어가는 것도 많았다. 회고를 써야지 써야지하고 미뤘는데 벌써 한 주가 지났다. 더 늦기전에 써 보려고 한다.
4주차 미션은 마지막 미션인 만큼 지금까지 피드백 받았던 것들을 최대한 과제에 녹여보려고 했다. 지난 미션에서 클래스와 객체 사용이 익숙하지 않았어서 클래스와 관련된 공통 피드백에 있는 키워드를 가지고 미션하기 전에 학습을 했다. 객체의 상태를 외부에서 직접 접근하는 방식을 최소화하란 피드백이 있었다. 그 이유를 찾던 도중 객체지향프로그래밍을 접하게 되었고, 관련된 키워드는 캡슐화와 은닉화였다. 캡슐화를 하는 이유는 독립된 객체를 사용하기 때문에 객체의 모든 데이터에 접근할 필요없이 내부의 데이터는 내부에서 알아서 조작할 수 있도록 하고 외부에서는 필요한 내용만 만들어 두는 편이 프로그램의 안정성과 사용성 측면에서 낫기 때문이었다. 내부의 일은 내부에서 하도록 하는 것 이로 인해 외부에서 상태를 변화할 수 없게 상태를 은닉하는 것이 프로그램의 안정성에 좋기 때문에 필드를 private로 처리하는 것이라고 이해했다. 이를 통해 객체 또는 클래스를 어떻게 다뤄야할지 감을 잡을 수 있었다.
구현을 하고 나서 코드를 보니 private로 필드를 처리해주면서 내부의 상태는 내부에서 처리하도록 BridgeGame 클래스를 만들었지만 UI 로직과 도메인 로직을 확실하게 나누지 못했었다. 도메인 로직에 Output에 관련된 상태와 로직들이 있었고 또, Input클래스에서 게임이 제어되고 있었다. 어떻게 분리를 깔끔하게 할 수 있을지 고민하다가 MVC 패턴에 대해 알게되었다. MVC 패턴의 핵심은 Model 즉, 도메인 로직과 View 로직은 서로 영향을 끼쳐선 안되고 Model과 View는 Controller를 통해 소통해야하는 것이다. 이 핵심을 가지고 리팩터링을 진행했다. 게임흐름을 제어하는 Controller 클래스를 하나 만들고, 입출력에 관련된 UI 로직과, 게임과 관련된 도메인 로직을 확실하게 분리하였다. 그 결과 자연스럽게 BridgeGame에서의 필드 수도 줄어들게 되었고, 메서드 라인이 10줄 넘어가는 것도 해결되었다. 리팩터링 후 객체를 사용하는데 익숙해졌고 내 자신이 한층 더 성장한 것을 느낄 수 있었다. 지난 미션에 왜 이렇게 안했을까! 라는 생각도 들었다. 지난 회고에서도 말했지만 공통 피드백은 정말 짱짱맨이다.. 매주 점점 어려워지는 미션을 통해 점진적으로 성장하겠금 과정을 만든 우테코 코치님들이 대단한 것 같다..
이 외에도 테스트 코드에 관련된 피드백을 적용해본 부분이 있다. 테스트하기 어려운 코드를 테스트하란 피드백이었는데 테스트 어려운 로직을 외부로 분리하는 경험을 하면서 기능 분리에 대한 인사이트가 좀 더 생기기도 했다.
4주가 너무 짧게 느껴졌고 너무 아쉬웠다. 혼자 공부한다면 이 정도로 몰입하기 어려운 것을 알기 때문에 더욱 더 아쉬웠던 것 같다. 하지만 많이 발전했다. 4주만에 자바스크립트 기초문법만 알고 있던 내가, 객체지향 프로그래밍을 접하여 적용해보고 디자인 패턴도 적용할 수 있다는 것이 놀라웠다. 하지만 아직 많이 부족하다는게 팩트다. 미션을 하면서 자바스크립트의 작동원리에 대한 개념이 부족하다고 생각했다. 특히 자바스크립트 비동기 개념이 부족하다고 느꼈다. 우테코에서 제공하는 MissionUtils 라이브러리에서 값을 입력받을 때, fs모듈을 사용하는데 콜백으로 되어있다. 입력받은 상태를 어떻게 관리해야하는지 항상 고민이 많았는데 미션에 참가하신 분들이 슬랙이나 디스커션에 올려주는 것을 보고 느낌만 알고 넘어가 미션을 진행했다. 이 부분에 대해서 더 공부해볼 예정이다. 우테코 시작할때 딥다이브 책을 구매했었는데 끝난 다음 날부터 조금씩 읽고 있다.(4주간 필요할때 도움이 많이 되었다) 결과 발표 전까지 1회독 할 것이다. 또, 숫자야구게임과 로또를 다리 건너기 미션처럼 클래스와 객체를 이용하여 MVC 패턴을 적용해 구현해볼 것이다. 분명 제출 당시엔 괜찮다했던 코드들이 쓰레기 그 잡채였다..ㅋㅋ 그리고 기회가 된다면 작년까지의 프리코스 문제들을 풀어볼 예정이다. 결과가 14일에 발표된다. 후회는 없다. 할 수 있는 만큼 최선을 다했다고 생각을 한다. 물론 코드에 대한 아쉬움은 있다. 그 아쉬움은 내가 매주 발전했기에 느낄 수 있는 것이라 생각한다. 어쩔 수 없는 부분이다. 그땐 몰랐고 매주 성장하며 알게되어 이전 미션에 아쉬움이 남은 것이니! 지원할때부터 매주 무언갈 느끼게 해주었던 과정이었고 내가 프로그래밍을 좋아한다고 다시 한번 느끼게 해준 과정이었다. 이런 경험을 할 수 있도록 해준 우테코 코치님들에게 정말 감사하다! 꼭 본과정에서 뵐 수 있었으면 한다!