본문 바로가기
일상

우아한테크코스 오프라인 코딩 테스트 리뷰 & 반성

by mrvan 2019. 4. 19.

 이번 주 화요일(4월 16일) 잠실에 있는 우아한 형제들 작은집에서 오프라인 코딩테스트를 진행하였다!

진행 방식은 프리코스에서 했던 것과 비슷하게 4시간 동안 한가지 미션(영화 예매 미션이였습니다.)을 구현하는 것이였는데, 결론부터 얘기하자면 집에 오자마자 내 결과가 너무 마음에 들지 않았다ㅠㅠㅠㅠㅠㅠㅠㅠㅠ

 

 프리코스 때에는 한 미션당 일주일이라는 시간이 주어졌었기 때문에 피드백 공부 -> 피드백을 생각하며 미션 개발 -> 다시한번 피드백을 보면서 미흡한 부분 수정을 진행할 수 있었는데 오프라인 코딩테스트에서는 4시간 동안 개발을 하는 것이기 때문에 이런 것을 전체적으로 다시 살펴볼 시간적인 여유가 없었다. 물론 처음 테스트를 진행하기 전에도 포비(박재성) 담당자께서 모든 기능을 구현하는 것을 목표로 두지 말고,하나의 기능이라도 프리코스 동안 배우고 발전한 것을 보여주는데 초점을 맞추라고 하셨기 때문에 완성을 다하지 못하였어도 그동안 노력한 결과가 보여진다면 좋은 결과가 있을 것이라고 생각된다.(아직 결과가 나오지 않아 너무 긴장이 됩니다....ㅎㅎㅎ)

 

 이번 오프라인 코딩테스트에서 프리코스때의 내용을 제대로 반영하지 못해 아쉬운 사항들은 다음과 같다.

1. get메소드의 사용

프리코스 2주차 자동차경주게임을 진행하고 나서 온 피드백 내용 중 하나가 객체에서 데이터를 꺼내려(get)하지 말고 메시지를 보내라는 내용이였다. 하지만 이번 영화 예매 미션을 진행하면서 다음과 같은 내용들에 대해 Get 메소드를 사용하였다.

(1) Movie 객체의 id, name, price / PlaySchedule 객체의 startDateTime

 - 미션에서 사용자가 선택한 영화의 스케줄을 저장하기 위해 ReservationMovie(영화 예매) 객체를 다음과 같이 구상하였다.

Movie 객체를 상속받아 id, name, price, ReservationSchedule 하나만을 저장하는 객체이다.

 

 이 객체를 생성하기 위해서는 위와 같이 기존 영화의 id, name, price와 예약 하기로한 schedule의 정보들이 필요한데 이를 얻기 위해 MovieReservation(영화 예매를 관장하는 클래스)에서 다음과 같은 파라미터들을 받아 객체를 생성하였다.

보면 get으로 데이터를 넘기는데 이렇게 생성해야할 필요가 있었나 싶다.

그래서 현재는 get을 쓰지않고 기존 객체만 가지고 생성하는 방법을 생각하고 있다.(전체적으로 수정을 해야 하다보니 주말 내내 해야할 것 같다.)

 

 

2. 불필요한 필드(인스턴스 변수)

2주차 자동차경주게임 이후 필드(인스턴수 변수)의 수를 줄이라는 피드백이 있었다. 하지만 이번 결과물을 리뷰하면서 결제 금액을 담고있는 객체인 ResultPay에서 다음과 같이 불필요한 인스턴스 변수가 발생되었다.

point와 paymentMethod(결제 수단)은 굳이 인스턴스 변수로 안넣어도 됐었다.

 

3. 자잘한 실수(컨벤션 준수)

이 부분이 내 자신에게 가장 실망스러운 점이다. 기능 구현을 잘 못한 것이 아닌 컨벤션 준수 실수가 있었다........

 

(1) 메소드 Naming 준수 

메소드의 앞글자를 대문자로 적었다.....(진짜 빠가사리)

 

(2) 값 하드코딩

 - 모든 값을 하드코딩 한 것이 아니라 일부 데이터에 대해 숫자를 하드코딩 해버렸다..진짜 왜그랬을까요ㅠㅠㅠ

왜 그랬을까..

 

(3) 접근 제어자 미설정

 - 위에서 설명한 ResultPay(최종 결제 금액) 객체에서 pay, point, paymentMethod의 접근제어자를 default로 하였다.(private이 맞는데 빼먹었다......)

빠가사리222

 

 

끝으로

현재까지 생각나는 아쉬운 점은 위와 같은데, 이번 주말 개선하다보면 더 많아질 것으로 생각된다. 그런데 예전에는 발견하지 못했던 이런 작은 결함(?)들을 발견할 수 있게 된 것도 이번 프리코스를 통해 얻게된 또 하나의 선물이 아닐까 생각 된다. 오프라인 코딩 테스트 결과와 상관없이(물론 합격을 바라지만) 이번 프리코스는 정말 많은 깨달음을 준 과정이라고 생각한다.