본문 바로가기

Value4

DDD - Value Object - 출처: 도메인 주도 설계 - 에릭 에반스 - Value-Object (VO) VO는 개념적인 식별성이 없고 사물의 어떤 특징을 묘사하는 객체이다. 예를 들어 어떤 아이가 펜으로 그림을 그리려고 하고 있다고 가정해보자. 만약 똑같은 색과 굵기와 모양의 펜이 2개가 있다면 아이는 어떤 펜을 사용해도 도 크게 개의치 않을것이다. VO는 설계요소가 어느것인지가 아닌 무엇인지에 관심이 있다고 할 수 있다. - "주소"는 VO인가? VO와 Entity에 관련된 글이나 자료를 보다 보면 자주 떠오르는 유형의 의문점이 있다. VO와 Entity의 차이 혹은 "주소"는 VO일까? 와 같은 유형의 질문이다. 이 질문에 해답역시 앞의 Entity 장에서 살펴본것과 같이 도메인에서 해결하고자 하는 문제에 따라 다르다. 전.. 2022. 7. 19.
Zero value - 출처: https://dave.cheney.net/2013/01/19/what-is-the-zero-value-and-why-is-it-useful - Zero value 내장 함수 new나 make를 호출하거나 선언을 통한 값을 저장하기 위해 메모리가 할당될 때, 명시적으로 초기화를 하지 않으면 메모리에는 기본 초기화된 값이 저장된다. 이때에는 해당 type에 맞는 zero value가 설정된다. boolean은 false, integer는 0, float은 0.0, string은 "", pointer, function, interface, slice, channel, map은 nil로 초기화된다. 초기화는 재귀적으로 일어나는데, struct 배열의 각 요소 인스턴스에는 값이 주어지지 않으면 해당 .. 2022. 6. 17.
Effective Go - Methods - 출처: https://go.dev/doc/effective_go#methods - Methods 메소드는 포인터나 인터페이스를 제외하고 명명된 유형에 대해 정의될 수 있다. 즉 Receiver가 반드시 구조체가 아니어도 된다. 예를 들어 Append라는 함수를 slice의 메소드로 정의할 수 있는데, 이렇게 하기 위해서는 우선 메소드를 묶을 수 있도록 명명된 유형을 정의해야 한다. 그리고 Receiver로 해당 형을 기술해준다. type ByteSlice []byte func (slice ByteSlice) Append(data []byte) []byte { // Body exactly the same as the Append function defined above. } 위의 메소드는 갱신된 sli.. 2022. 5. 17.
UML - 클래스 다이어그램 고급 - 참조 객체, 값 객체 - 이 글은 UML Distilled (마틴 파울러)책을 기반으로 작성하였습니다. - 참조 객체와 값 객체 보통 객체는 고유성을 가지고 있다. 이는 참조 객체에 대한 이야기이며, 값 객체에서는 해당사항이 없는 이야기이다. 참조 객체는 무엇이고 값 객체는 무엇인가? - 참조 객체(Reference Object) 참조 객체는 고객과 같은 객체이다. 만약 프로그램에서 고객을 참조한다면, 해당 고객의 참조는 유일하길 원할 것이다. 그래야만 해당 고객에 대한 정보가 변경될 때, 해당 고객을 사용(참조)하고 있던 여러 사용자들(여기서는 사람을 말하는것이 아니라 참조를 하는 다른 코드를 말한다.)에게 해당 정보가 반영될것이다. 만약 어떤 고객에 대한 참조가 여러개 있고 이런 참조들이 같은 고객을 참조하고있는지 확인하.. 2021. 2. 10.