meopin-top / convey-your-mind-WSS

마음을 전해요. 백엔드(WSS)
0 stars 0 forks source link

Feature/#2 #9

Closed j1mmyson closed 1 year ago

j1mmyson commented 1 year ago

개요

WSS 주요 핵심 기능 및 전체적인 코드 틀 구현

내용

mochang2 commented 1 year ago

구글에 열심히 검색해봤는데... Go를 잘 몰라서 각 파일이 무슨 역할을 하는지 잘 모르겠어요. 각 파일이 어떤 목적으로 선언됐는지, 왜 타입만 선언된 파일들도 있는지 설명해주실 수 있나요?

j1mmyson commented 1 year ago

구글에 열심히 검색해봤는데... Go를 잘 몰라서 각 파일이 무슨 역할을 하는지 잘 모르겠어요. 각 파일이 어떤 목적으로 선언됐는지, 왜 타입만 선언된 파일들도 있는지 설명해주실 수 있나요?

우선 요 레포 보고 아키텍처 설계했습니다 => https://github.com/bxcodec/go-clean-arch

레이어가 크게 4가지로 나뉘는데요 가장 큰 특징은 하위 레이어는 상위 레이어에 호출될 수 없다는 점입니다. domain > repository > usecase > delivery (ex. 모든 레이어에서 domain 호출 가능, domain 레이어에서는 다른 레이어 호출 불가능)

위에가 각 폴더의 목적입니다.

타입만 구현되어있는 코드는 고언어의 특징중 하나인 덕타이핑 개념을 녹였는데요 덕타이핑 = "어떤 객체가 Quack(). Walk()라는 메서드를 갖고 있으면 이 객체를 Duck이라고 하겠어" 입니다. 그래서 선언부는 domain 패키지에, 구현부는 usecase, repository 패키지에서 구현하여 확장성을 높이고 결합도를 낮춰보려고 이렇게 코드를 짰습니다

덕타이핑에 대해 잘 설명된 글을 하나 첨부하겠슴다 https://www.popit.kr/golang%EC%9C%BC%EB%A1%9C-%EB%A7%8C%EB%82%98%EB%B3%B4%EB%8A%94-duck-typing/