Facts.
- 2월 회고, 3월 2주차 회고를 작성했습니다.
- 루비로 배우는 객체지향 디자인 5장을 읽고 정리했습니다.
-
스노클링
- inversify를 걷어냈습니다. Container context를 생성했습니다.
- useCreateUser 커스텀 훅에 로직을 추가하고 테스트 코드를 작성했습니다.
Feelings.
- 오리 타입에 대해서 배웠습니다. 정적 타입 언어에서 인터페이스랑 같은 개념 아닌가?라는 궁금증이 생겼는데 오리 타입은 런타임 개념이 들어가고 인터페이스는 컴파일 타임 개념이 들어간다는 차이를 알게 되었습니다.
- 클래스를 가로지르는 인터페이스 부분을 배우면서 현재 프로젝트에서 switch 문을 사용하는 부분이 있는 데 그 부분에 오늘 알게 된 내용을 적용해야 할지 말 지 고민입니다. 리액트 컴포넌트와 아주아주 가까운 코드여서 객체지향 디자인을 적용하는 것이 맞나라는 생각이 듭니다.
- 뭔가 하기는 하는데 뭐를 했는지 두루뭉술해서 앞으로 뭐를 해야 하는지 결정이 잘 안되는 느낌 때문에 2월에 무엇을 했는지 정리하는 시간을 가졌습니다. 프로젝트 부분에 시간을 너무 적게 투자한 것 같습니다. 그래서 별로 한 게 없습니다. 3월에는 프로젝트를 중심으로 보내야겠습니다.
- useCreateUser 커스텀 훅의 테스트를 작성하는 중간에 appContainer의 get을 사용해서 hook이나 컴포넌트를 테스트하는 것의 문제점을 발견했습니다. appContainer 외부 라이브러리를 사용하기 때문에 mocking 하기가 까다롭다는 것을 알게 되었습니다. 곰곰이 생각해 보니 이번 프로젝트에서는 의존성 주입이 필요한 부분이 많이 없을 것 같다고 생각해서 걷어내기로 결정하고 많이 사용한 곳이 없기 때문에 걷어냈는데 방금 까먹고 있었던 inversify를 도입한 이유가 생각났습니다... 후... getServerSideProps에 사용하려고 했었는데.... 다시 붙여야겠습니다....
- 그래도 컴포넌트나 훅과 같이 리액트 위에서 돌아가는 코드에서는 appContainer의 get을 mocking 하기 까다로우니 컨테이너 역할을 하는 컨텍스트를 생성해서 다른 컴포넌트나 커스텀 훅으로 필요한 모듈을 꽂아주도록 구현을 고쳤습니다.
Future Action Plans.
- inversify가 필요할 때 붙입니다.