우테코 4기 프리코스 4주차 회고

귀찮Lee·2022년 11월 22일
0

TIL / 회고록

목록 보기
32/35

◎ 회고

공통 피드백...

  3주차 공통 피드백을 보면서 3주차 과제에 아쉬움이 많이 남았다. 초기 구조도 잘못 잡은것 같았는데 피드백 사항에도 많이 해당되서 더욱더 아쉬웠다. 그래서 일단 3주차 과제 리팩토링부터 실시했던 것 같다.

  그 중에서도 가장 아쉬웠던 점은 비즈니스 로직과 UI 로직을 분리를 제대로 하지 못했다. 내가 생각했을 때는 "Input은 입력 기능이 있고, Output은 출력 기능만 있으면 되겠지" 였는데, 4주차 과제에서 InputView와 OutputView를 보니까 많이 달랐다.

  그렇게 리팩터링한 것을 바탕으로 4주차 과제를 어떻게 구현해야 할지 더 구체화 할 수 있었다. 4주차 과제가 있는데도 3주차 과제를 붙잡고 있으니 좀 답답했지만 지금 생각해보면 이번 과제에 많은 도움이 된 것 같다.

구현 중

  대략적인 Class들과 메서드들이 정해져 있어서 출제자의 의도(?)를 쉽게 파악할 수 있었다. 이전 과제들과 유사하게 구현해서 그런지 나름 쉽게쉽게 흘러갔던 것 같다.

  구현하면서 가장 고민 했던 것은 "Class 별로 얼마나 적당한 책임을 주어야 할까?", "어떤 메서드를 어떤 형식으로 구현해야 사용이 쉬울까?", "어떻게 해야 수정이 용이할까?" 였다. 나름 한 번에 많은 것들을 생각해서 그런지 시간은 오래 걸렸던 것 같다.

리팩터링

  중간중간 더 좋은 구조들이 떠오르면 수정했다. Class의 목적과 멀어지는 부분이 많다고 생각이 들면 파일을 분리했다. 전역적으로 같이 사용하는 변수가 있다면 따로 분리해서 상수로 만들고 같은 값을 사용하기도 했다.

  그리고 마지막에서는 요구사항들과 내 코드를 비교해가면서 전부 지켰는지 확인했다. 가장 까다로웠던 점은 "메서드 라인 10줄 이내" 였는데,메서드 시그니처가 쓰여 있는 줄을 포함하는 건지 아닌건지 헷갈렸다. 최대한 8줄 이내로 쓰려 했는데, 테스트 코드 메서드 1~2개에서 딱 10줄까지 사용했다.

합격하고 싶어요...

  회고를 작성하는 시점에서 과제 제출자가 1000명 정도 되고 과제들을 대략 둘러보니 내 것이 밋밋하게 느껴졌다. 물론 내가 어느 것이 좋은 코드고 안 좋은 코드인지 구분할 수는 없지만 그냥 내가 특출나게 잘하지는 않은 것 같았다.

  대략적인 구성을 과제 시작 전에 제공해주어서 다들 구조가 비슷비슷했다. 내가 공부한 내용들이 크게 도드라지지 않는 것이 아쉬웠다. 꼭 평가하면서 내가 공부한 자료들을 봐주셨으면 좋겠다. (진짜 열심히 했다구요...)

최선을 다했다.

  4주간 프리코스를 통해 java 코드 작성하는 법에 대해 돌아볼 수 있는 시간이 되었다. 유지-보수가 용이하게 작성하는 법을 혼자 찾아서 공부할 수 있었다. 이런 계기를 만들어준 우테코 측에 감사하다.

  4주라는 시간 동안 책 3~4권을 참고했고, 요구사항을 맞추기 위해 노력했으며, 노션에 작성한 페이지만 20개 이상이다. 합격이라는 계기가 있으니 스스로 움직이고 모르는 부분을 찾기 위해 열심히 노력했다. 이 분량이 결코 작지 않다. 나는 최선을 다했다고 생각한다.

◎ 학습한 과정

  1. Convention 정리 내용 다시 살펴보기

    • 2~3주차 과제를 하면서 정리한 Git Convention, Coding Convention을 다시 한 번 살펴봄
  2. 피드백 정리 및 이를 바탕으로 3주차 과제 일부 리팩토링

    • 우테코에서 제공한 3주차 공통 피드백을 참고하여 해당 내용을 3주차 과제에 적용해봄
    • 피드백을 적용해보며 4주차에 어떻게 할지 구상해봄
  3. 피드백을 바탕으로 요번 과제 구현

    • 최대한 주어진 조건을 고려하며 요번주 과제 구현
    • 제공되는 Class들을 "디미터 법칙"(객체의 내부 구조에 강하게 연결되지 않도록 협력 경로를 제한)을 지키기 위해 노력함
  4. 책이나 자료를 찾아보면서 리팩토링 실시

  • 중간 중간 책 읽으며 공부하고 내용 정리함

    • "오브젝트" (조영호)

      • 어떻게 하면 여러 Class로 용이하게 분리할 수 있는지 알기 위해서 이 책을 읽음
      • 최근 "명령-쿼리 분리" 부분을 읽고 BridgeGame class에 적용하여 리팩토링을 실시함
    • "헤드퍼스트 디자인패턴" (에릭 프리먼 외 3인)

      • 3주차 과제를 하면서 추후에 조건들을 용이하게 변경할 수 있도록 구조를 짜려다 보니 내가 만든 객체들의 협력 구조가 이상하게 보였다. 다수의 사람들이 많이 사용한 구조를 익히기 위해 디자인 패턴 책을 읽었다.
      • 여러 패턴을 보면서 객체 지향적으로 설계하기 위한 원칙들을 유심히 봤고, 패턴을 적용하기 전후 상황을 비교하며 어떤 부분이 나아졌는지를 이해했다.

◎ 미션을 진행하면서 느끼고 배운 점

  • 이전까지 Spring에 대해서만 공부했는데 java를 더 깊이 공부하면서 단순히 이론적으로만 들었던 객체 지향 설계 원칙(SOLID)를 어떻게 해야 적용할 수 있는지 어느 정도 알게 되었다.
  • "수정이 용이한" 처럼 추상적으로 아는 내용을 "InputView와 OutputView를 이용하여 비즈니스 로직과 UI를 분리" 처럼 구체적인 내용으로 적용해 볼 수 있게 되었다.
  • 막연한 리팩터링이 아니라 명확한 기준을 가지고 리팩터링을 하면서 예전보다 더 나아진 코드를 만들어 나갔다.

◎ 많은 시간을 투자한 부분

  • 공통 피드백을 누적하여 정리하고 이전 과제를 혼자서 피드백하며 리팩토링을 했다.
  • 알고 싶은 부분에 대해 생각하고 이를 바탕으로 책을 정해서 읽어보고 정리했다.
  • 내가 공부한 내용들을 다시 찾아 보았을 때 알아보기 쉽도록 정리했다.

◎ 관련 링크

profile
배운 것은 기록하자! / 오류 지적은 언제나 환영!

0개의 댓글