heeji.dev

5월 4주차 회고: 도메인 로직과 UI 로직 분리에 대해

2024-05-27

이번 주에 한 것

  • 자바스크립트 프로토타입, 클래스 개념 공부

지난주 개선점을 잘 수행했나?

과제 수행 목적에 대한 고민하기 (구현에만 집중할 것이 아니라)
과제를 진행하면서 틈틈이 이 과제를 왜 해야 하는지, 왜 이런 요구사항이 나왔는지 고민을 했다. 도메인과 UI 로직에 대한 고민을 해보라는 게 가장 큰 목적이었다고 생각한다. 도메인 로직을 분리해 놓으면 여러 View에서 재사용하기 좋다. 각 각의 역할은 주요 데이터 관리 및 기능 정의, 사용자와의 상호작용이므로 신경 써야 하는 부분이 분리되어 유지보수도 용이할 것이라고 생각했다. 그 외에는 학습한 클래스 개념을 직접 사용해 보며 체득시키기 위해, 기능을 수정/추가하기 용이한 코드가 무엇인지 고민해 보라고.
개념 공부를 하며 틈틈이 프로토타입이란? 클래스란? 왜 중요한데? 등 스스로 질문 답변을 많이 해봤다. 이것 또한 개념을 익히는데 도움이 되었다. 스스로 답해보면서 멈칫하는 순간이 생겼고 그 부분에 대해 다시 찾아보거나 고민했다. GPT를 많이 활용했는데 내 답변을 보충하거나 수정사항을 제안해 달라고 해보기도 하고 아예 네가 설명해 보라고도 해보고 했다. 짱.

고민한 부분

  1. 도메인, UI 로직을 나누면 무엇이 좋을까? 어떻게 실제로 해볼 수 있을까? 에 대한 고민.
      • 프론트엔드 개발 영역에서 사용자와의 상호작용 / 중요 데이터와 이를 다루는 규칙 이렇게 두 개의 분리가 제일 합리적이라는 생각이 들었다. 역할이 달라서 해당 영역을 구현할 때 고민하는 부분이 다르기 때문이다.
      • 검색을 통해 MVC, MVVM 패턴 등에 대해 알게 되었다. 이걸 보고 Controller를 두는 게 좋겠다는 생각도 했다. 왜냐하면 도메인 로직은 게임 관련된 내용으로 딱 분리하고 남은 게 게임 제어와 유저 입출력 내용이라 이 내용들이 모두 UI 로직에 있는 게 어색하다고 느껴졌다. 하지만 결국 Controller를 두지 않았는데, 그 이유는 현재 프로그램의 규모가 작아 굳이 Controller를 둬서 코드를 분산시킬 필요가 없다고 판단했다.
  1. 클래스를 공부하다 보니 객체 지향 프로그래밍에 대한 공부도 하게 되었다. 추상화, 다형성, 캡슐화 등 등,, 많은 특징들을 공부했고 내 코드와 이 개념들을 연관 지어 생각해보려 했다. 만약에 나중에 숫자 업앤다운 게임에 레벨이 추가되고 (초급, 중급, 고급), 초급 레벨에서는 힌트를 제공한다거나 시간제한 등의 기능이 추가되었을 때 클래스를 확장해 볼 수도 있겠다 생각했다.

잘한 것

  • 코감기가 심하게 걸려서 병원 약을 3번 바꾸고 수액도 맞고.. 암튼 코감기와 싸우며 어쨌든 하고자 한 목표를 이뤄낸 것
  • 과제 요구사항이라던지 개념 등을 있는 그대로 받아들이지 않고 비판적으로 바라보려고 의식적으로 노력한 것

부족하다고 느낀 부분과 개선점

  • 멘토링을 시작한 목적이 흐려진 느낌이 들었다. 멘토님께서 주어진 것 외에 한 게 무엇인지 물었을 때 머리가 띵했다! 새로운 지식을 습득하고 고민하고 코드를 짜는 과정 그 자체가 재밌어서 시야가 이곳에만 집중되어 있다고 느꼈다. 내가 멘토링을 시작한 이유는 내가 무엇이 부족한지 알고 채워나가는 경험을 하는 것이었다. 근데 이번주는 약간 주어진 과제와 공부 범위를 잘해야지!라고만 생각했던 듯. 몇 가지 생각을 해볼 필요가 있는데
    • 나는 어떤 개발자가 되고 싶은지, 그런 개발자가 되기 위해서 무엇을 해야 하는지
    • 나는 어떤 환경 (회사)에서 일하고 싶은지
    • 부족한 점이 무엇인지, 어떻게 채워나갈 것인지에 대한 계획

다음 주 계획

  • 자바스크립트 개념 전반적인 복습 및 면접 준비
  • 숫자 업앤다운 게임 View를 Web으로 전환
    • 테스트 코드
    • 브라우저, WEB API 등 공부
  • 개선점 의식하며 지내기 (내 생각을 글로 정리해서 블로그에 올려보기)
  • 리팩터링 책 읽어보기

기타 자료들