Peony의 기록 창고 🌼
article thumbnail
반응형

벌써 마지막주차,,! 저번주에 프리코스를 시작한 것 같았는데 벌써 마지막주차다. 이번 주차는 '다리 건너기' 였다. 이번 주차는 3주차 과정에 리팩터링이라는 목표가 추가되었다. 저번 주차때, 리팩토링을 할 시간이 부족했어서 아쉬움이 많았는데, 이번주는 코드 작성을 일단 빨리 해보고, 차근차근 리팩터링을 하자!라는 마음가짐으로 과제를 했던 것 같다. 이번 미션 역시 역할별로 클래스를 분리하고, 기능 목록 단위의 커밋을 하려고 노력했다. 처음에 읽을 때는 구현하기 쉬울 것 같았지만, 제약조건을 지키면서 하려다보니, 쉽지는 않았던 것 같다.

 

중점적으로 한 것들

  1. Controller, Service 분리하기
    : 저번주에는 Controller와 Model의 기능을 헷갈려서. Model은 객체의 상태변화를 위주로, Controller는 실행 로직에 대한 메소드를 작성한다 생각하고 개발을 진행했다.
  2. 커밋 컨벤션 잘 하기
    : 항상 커밋 메세지를 feat, refactor 이렇게만 작성했었는데, 이제보니 구체적으로 작성하지 못했다라는 생각이 들었다. 그래서 이번주부터는 조금씩이라도 구체적으로 작성해서 커밋 기록만 보고 어떤 부분이 변경되었는지 확인하기 쉽게 하도록 노력했다.
  3. enum 너무 막 쓰지 않기
    : 저번주에는 static final 을 사용하지 않고, 대부분의 내용을 enum으로 사용했었는데, 너무 아무생각없이 enum으로 한 것 같아서 이번에는 꼭 필요한 부분에만 enum을 사용해보았는데 이 방법이 맞는건지는 잘 모르겠다.
  4. 객체를 객체스럽게 사용하기
    : 3주 차 피드백에 의하면 "데이터를 꺼내지(get) 말고 메시지를 던지도록 구조를 바꿔 데이터를 가지는 객체가 일하도록 한다."라는 말이 있었다. 그래서 최대한 사용하지 않으려고 했으나... User 객체에 담은 데이터를 출력할때 get을 사용해서 작성했다. 이부분을 get하지 않고, 내부에서 사용하는 방법이 있을지 궁금하다. 이부분은 우테코가 끝난 후 계속 고민해봐야할 것 같다.
  5. 코드는 한번에 짜는 것이 아니라, 차근차근 발전 시켜 가는 것이라는 것 명심하기 
     이전에 코드를 한번에 짜려고 하다보니, 마지막에는 시간이 부족해서 리팩토링을 할 시간도 부족했어서 이번주는 클린 코드에 대한 욕심이 생길 때마다 일단 작성하고 천천히 개선시키자라는 마인드로 코딩을 하다보니, 리팩토링 할시간이 엄청 충분하지는 않았지만, 그래도 어느정도 리팩토링을 할 수 있어서 좋았다. 또, 이번 요구사항에 메소드를 10줄 이하로 만드는 것이 있었는데, 처음에는 코드를 짜다가 분리를 먼저 하고, 나중에 코드를 완성시키는 방향으로 하다보니, 내가 생각했던 로직이 꼬여서 헤맸던 것 같다. 그때마다 일단 작성하고, 나중에 수정하자라고 생각하며 쭉 미션을 해나갔었다.

 

아쉬웠던 점

  1. 단위 테스트 코드 작성
    : 처음에 내가 생각했던 방향은 작은 로직을 짜고 나면, 바로 테스트 코드를 짜서 하나하나 검증을 해보고 넘어가는 방식으로 하려고 했었다. 하지만, 막상 로직을 짜다보니, 기능 구현에 몰입되어서 테스트 코드를 짜는 것을 잊어버렸다..! 결국 기능 구현을 다 하고 나서 테스트 코드를 작성하고 있는데, 이러한 방식으로 하는 것이 뭔가 비효율적인 것 같다는 생각이 들었다.  
     또, 테스트 코드를 어느정도로 작게, 쪼개서 해야할지 아직 감을 못잡은 것 같다. 예외 테스트를 제외한 테스트 코드에서 뭔가,, 코드를 짜면서 이렇게 짜는게 맞나..?라는 생각이 계속 들었다. 아직 단위 테스트 부분이 뭔가 명확하게 와닿는게 없어서 그런 것 같다. 앞으로 테스트 코드를 많이 짜고, 다른 사람들의 코드를 보면서 감을 찾아봐야 겠다는 생각이 들었다.

 

느낀점

 저번주에 메소드 길이를 15줄로 제한했을 때는 "15줄,, 생각보다 괜찮은데?! "라는 생각을 하면서 문제를 풀었었다. 실제로도 기능별로 함수를 분리하다보니, 15줄을 넘는 경우가 거의 없었기 때문이다. 다만, 메서드 길이에 공백 라인을 포함하지 않고 15줄이라 생각했었는데, 3주차 피드백으로 보고 내 생각이 잘못되었음을 깨달았다. 이번주는 함수의 길이가 10라인을 넘어가지 않도록 구현하는 내용이 추가되었는데, 처음 시작할 때는 이 요구사항이 어려울 것 같지는 않았었다. 하지만, 막상 코드를 짜다보니 10줄이 넘어가는 경우가 조금 있었고, 그럴때마다 지금 짜고있던 로직을 마저 짜고 리팩토링할 때 이부분을 수정할 것인지, 아니면 지금 메서드를 분리하고, 마저 로직을 짤 것인지 고민을 했던 것 같다. 그럴때마다, 2주차 때 다짐했던, 코드는 한번에 짜는 것이 아닌, 차근차근 발전 시키는 것이라 고 계속 생각하며, 로직부터 쭉 완성했던 것 같다.

 일단 만들고 차근차근 리팩토링을 하자! 라는 생각으로 구현하다보니, 구현은 했지만, service 쪽에 들어가야한다고 생각하는 로직들이 다 controller 쪽에 뭉쳐있는 것을 발견했다. 이대로 쭉 로직을 짜면, 제공되어있는 BridgeGame 클래스에 있는 함수를 내가 처음 생각했던 방향으로 만들지 못하는 것이 명확했지만, 그래도 일단 완성하고, 천천히 바꿔보자라고 계속 되새기며 코드를 짰다. 기능 구현을 다 완성하고 나서, 막상 리팩토링 하려니 막막했다. 또 Controller에 있는 로직들을 Service로 옮기다보니, 완성했던 기능 구현들이 다시 어긋나기도 해서 중간에 되게 답답했었다. 그래도 차근차근 조금씩 수정해가자! 라는 생각으로 단계적으로 고쳐가다보니 리팩토링이 즐겁게 느껴졌다. 프리코스를 하면서 항상 시간에 쫓겨 리팩토링을 오래 하지 못했었고, 리팩토링을 어떻게 해야할지 감이 안잡혀서 막막했었는데, 이번 마지막주 과제를 하면서 리팩토링은 이런식으로 하면 되겠구나! 같은 감을 잡을 수 있어서 좋았다.

 

정말 아쉽게도.. 벌써 4주차 프리코스가 완료되었다. 한 달이라는 시간 내내 과제에 몰두해서 지내다보니, 정말 순식간에 지나간 것 같다. 프리코스를 하면서, 나보다 더 전문가이신 현업 개발자분들에게 코드 리뷰를 받는게 가장 즐거웠다. 비록 인원이 많아서 1:1 코멘트를 받지는 못했지만 공통 피드백만으로도 내가 생각해보지 못한 것들을 알려주셔서 생각할 부분이 많았다. 이 프리코스를 하면서 미션을 해나가는 과정은 힘들었지만, 매주 성장하는 자신을 발견하는 기회가 되어 프리코스를 하길 잘했다고 생각한다. 정말 프리코스만 몇 달 하고 싶을 정도로 내가 성장하고 있구나를 많이 느끼게된 4주였다. 

이러한 좋은 기회를 제공해주신 코치님들께 감사하고 앞으로도 우테코의 다른 참여자분들과 함께 성장할 수 있었으면 좋겠다.🙇🏻‍♀️

 

반응형
profile

Peony의 기록 창고 🌼

@myeongju