[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를 엔티티로 바꾸고 다루는 계층은 서비스계층이어야 한다는 것이다.
아직 충돌되는 것도 많고, 혼란스러운 점도 많다. 따라서, 이럴때 일수록 나 스스로 납득이 되고, 팀원들도 쉽게 이해시킬 수 있는 역할 정의가 필요하다.
프로젝트까지 남은 기간이 얼마남지 않았는데, 그 전까지 나름의 기준을 세워 지난 프로젝트처럼 모든 팀원들이 같은 그림을 그리고 프로젝트에 돌입하게 하고 싶다.