2021. 8. 13. 16:24ㆍTIL(Today I learned)
📕Facts(한 것)
- 운동하기
- 영화 평점 프로젝트 진행하기
- 클린 아키텍쳐 읽고 정리하기
📕Feeling(느낀 점)
클린 아키텍쳐에서 소개하는 코드를 설계하는 원칙에는 SRP(단일 책임 원칙), OCP(개방 폐쇄 원칙), LSP(리스코프 치환 원칙), ISP(인터페이스 분리 원칙), DIP(의존성 역전 원칙)이 있다. 그 중에서 오늘은 DIP, 의존성 역전 원칙, 에 대해서 얘기해보려 한다.
DIP에 대해서 간단히 얘기하면, 구체적인 클래스 보다는 추상 클래스나 인터페이스에 의존성을 두는 것을 말한다.
그렇다면 왜 구체적인 클래스보다 추상 클래스와 인터페이스에 의존성을 두어야할까? 그 이유는 쉽게 유추할 수 있다. 바로 구체적인 클래스는 변동성이 크기 때문이다. 구체적인 클래스는 변동성이 크기 때문에, 이 구체 클래스에 의존성을 둔 클래스 혹은 메서드는 구체적인 클래스가 변경될때마다 수정을 해줘야하는 번거로운 일이 발생한다. 그렇게 되면 유지보수에 아주 치명타를 입게 되지 않겠는가? 그래서 <클린 아키텍쳐> 에서는 변동성이 큰 구체 클래스를 참조하지 말고, 대신 추상 인터페이스를 참조하라고 설명하고 있다. 같은 맥락에서 구체 클래스로부터 파생하는 것 역시 피하라고 말하고 있다. 당연한 얘기이지만, 상속을 한다는 것은 필연적으로 의존성을 가지는 것을 의미하기 때문이다. @override역시 같은 맥락이다.
DIP 위배를 모두 없앨 수는 없지만, DIP를 위반하는 클래스들을 적은 수의 구체 컴포넌트 내부로 모을 수 있고, 이를 나머지 부분과 분리할 수 있다고 말한다. 그리고 주로 그 구체 컴포넌트는 main함수를 포함한 Main 컴포넌트가 된다.
to do list 앱이 PUT 매핑는 정상작동 하는데, PATCH 매핑이 정상작동하지 않아 살펴보니, service에서 updateTask 메서드가 repository에 의존하지 않고 값을 리턴해서 생기는 문제였다. 문제를 해결하니 프론트에서 정상작동 되었고, Javadoct작업을 마무리 한 후 배포까지 진행할 예정이다.
포트폴리오를 작성하기 위해서 사이트를 하나 만드는 것이 좋을지, githubPage를 이용할지 고민이 된다. 좀 더 생각해보고, 더 유연하고 나를 잘 표현할 수 있는 것을 골라야겠다.
📕여담
운동을 기존 3분할에서 무분할로 변경했다. 약점부위를 개선하기 위함인데, 1~1시간 30분 내에 끝낼 수 있고, 강도를 더 높게 가져갈 수 있는 것이 장점이다. 총 세트수는 30세트 전후로 가져갔다.
'TIL(Today I learned)' 카테고리의 다른 글
(TIL) 20210815 (0) | 2021.08.15 |
---|---|
(TIL) 20210814 (0) | 2021.08.14 |
(TIL) 20210810 (0) | 2021.08.10 |
(TIL) 20210809 (0) | 2021.08.09 |
(TIL) 20210808 (0) | 2021.08.08 |