도메인주도설계를위한함수형프로그래밍 #3 타입으로 도메인 모델링하기 #760
yoonminsang
started this conversation in
Today I Learned
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Chapter 5. 타입으로 도메인 모델링하기
type UnitQuantity = number내 생각나도 위와 같은 type alias를 사용한 경험이 있다. 사실 단순 타입 방법을 모르고 타입스크립트의 구조적 타입 시스템을 너무 당연하게 받아들여서 그런 것 같다. enum같은 경우는 알고 있었는데 단순 타입은 생각해본적이 없다.
처음에는 type alias를 설정해서 좋았는데 타입 강제화가 안되다보니 여기저기서 어느샌가 원시타입으로 설정된것을 볼 수 있었다. 코틀린은 런타임 오버헤드 없이 타입 안정성을 보장한다던데 역시 언어의 차이가 아직도 조금씩은 존재하는 것 같다.
가장 간단한 방법은 개별 매개변수로 전달
새로운 레코드를 매개변수로 전달
내 생각왜 함수형에서 커링을 그렇게 많이 사용하는지 조금은 알 것 같다.
내 생각보통 실패처리는 try cath문도 많이 사용한다. 어떤 개발자들은 try catch를 사용하지 않고 명확한 타입을 선호한다.(특히 rust) 이것도 그런 맥락인걸까?
catch문에서도 명확한 에러타입이 정의되어 있다면 에러처리를 제대로 할 수 있긴한다. 물론 catch문은 기본적으로 unknown type이기 때문에 에러 타입 validation을 한 번 더 해야한다. catch자체가 에러를 던져버리는거라서 어쩔 수 없는 구조긴하다. 하지만 에러와 성공의 관심사를 분리할 수 있다는 장점이 있다.
둘 다 장단점이 있는 방식 같다.
값 객체가 같은지 비교하려면 모든 하위 속성들의 값이 동일한지 비교해야한다. 이를 구조적 동등(structural equality)라고 한다.
언어마다 지원하는 방식이 다르다. ts는 지원하지 않는다.
값 객체, 엔티티는 맥락에 따라 변한다.
엔티티는 값이 변경되더라도 안정적인 정체성을 유지해야하므로 id같은 식별자를 부여해야 한다.
링크 참고
집합체
내 생각최근에 많은 서비스들은 db foreign key를 사용하지 않는다는 것을 들었고 새벽에 gemeni랑 많은 이야기를 했었다. 생각해보니 위 집합체 내용과 연관이 있는 내용이다. 결국 이런 패턴들은 마이크로서비스를 만들기 위해 많이 사용하는 패턴이고 DDD는 마이크로서비스와 어울리는 패턴이다보니 자연스러운 흐름인 것 같다. 모놀리식에서도 집합체 기준으로 나눈다면 fk의 사용여부를 유연하게 결정할 수 있을 것 같다.
entity.ts
집합체.ts
Beta Was this translation helpful? Give feedback.
All reactions