✏️ 2022-12-19 Today I Learn

@mitoconcrete · December 19, 2022 · 3 min read

[TodayKeywords] 오늘 공부한 키워드

[NextKeyworks] Study Queue

  • HTTPS
  • SOLID
  • loop label
  • CSV
  • 파일입출력
  • UML
  • UTC
  • epoch time / Instant time
  • MVC
  • URL ClassLoader
  • Secure ClassLoader
  • JNI
  • GC
  • HOF
  • 자바 해시코드(hashCode)
  • OSI 7 계층
  • PCB
  • 스프링 설계철학
  • RESTful
  • 준 영속성
  • 지연로딩
  • 프록시객체
  • jpa - mybatis 의 차이
  • orm - mapper 의 차이
  • 쿠키/세션/로컬 스토리지
  • HttpMessageConverter

[회고] 221219 : 리팩토링2 (서로가 서로의 존재를 모르게 하는 것)

리팩토링을 하다 어느순간 손이 멈췄다. 각 계층이 서로에게 의존하지 않고, 또 흐름에 따라 DTO가 지속적으로 변화하지 않아야하며, DTO는 단순히 데이터를 옮겨주는 꾸러미의 역할만 했어야했다. 또한, 각 서비스들은 각자의 역할에 충실해야만 했다. 하지만, 계속 손이 멈췄던 이유는 연관관계를 갖는 엔티티들 간에 DTO를 주고받을 때, 어쩔 수 없이 DTO에 엔티티를 넣어줘야하는 상황이 발생했기 때문이었다.

ㅅㅁ튜터님은 영속상태의 엔티티는 절대 컨트롤러까지 내려와선 안된다고 당부하셨다. 주말부터 꿈에서 계속 이 프로젝트를 리팩토링하는 꿈을 꿨는데, 꿈에서도 원활하게 안되서 잠도 편히 잘 수 없었다. 오늘 내내 많은 레퍼런스들을 보았다. 하지만, 명확한 해답이 없는 문제라 더욱더 고민이 많아지고 스트레스를 받는 것 같다.

확실해진 것은, 일단 영속적인 엔티티를 컨트롤러에서는 알 수 없어야하고, 다룰 수 없어야 한다는 것. DTO끼리 매개변수로 넘기는 것은 최대한 지양해야한다는것(DTO에 종속적이게 됨) DTO를 엔티티로 바꾸고 다루는 계층은 서비스계층이어야 한다는 것이다.

아직 충돌되는 것도 많고, 혼란스러운 점도 많다. 따라서, 이럴때 일수록 나 스스로 납득이 되고, 팀원들도 쉽게 이해시킬 수 있는 역할 정의가 필요하다.
프로젝트까지 남은 기간이 얼마남지 않았는데, 그 전까지 나름의 기준을 세워 지난 프로젝트처럼 모든 팀원들이 같은 그림을 그리고 프로젝트에 돌입하게 하고 싶다.

@mitoconcrete
어제보다 조금 더 성장하기 위해 기록합니다.