이것은 일종의 OOP 및 / 또는 기업 / 응용 관점에서 비롯 될 수 있으며 특정 분야 / 도메인에는 적용되지 않을 수 있지만, 나는 원시적 집착 의 개념을 제시하고 싶습니다 .
응용 프로그램의 여러 종류의 정보에 다른 데이터 형식을 사용하는 것이 좋습니다. 그러나 몇 가지 심각한 성능 문제 (측정 및 확인 등)가없는 한 내장 유형을 사용하는 것은 좋지 않습니다.
우리는 우리의 응용 프로그램에서 켈빈 모델 온도 싶은 경우에, 우리는 사용할 수 ushort
또는 uint
또는 표시하기 위해 유사한 "부정적인 학위의 개념을 켈빈 말도 및 도메인 논리 오류". 이것의 배후에있는 아이디어는 건전하지만, 당신은 계속 가지 않을 것입니다. 우리가 깨달은 것은 음수 값을 가질 수 없기 때문에 아무도 켈빈 온도에 음수 값을 할당하지 않도록 컴파일러를 사용할 수 있으면 편리합니다. 온도에서 비트 단위 작업을 수행 할 수 없다는 것도 사실입니다. 그리고 온도 (K)에 무게 (kg)를 추가 할 수 없습니다. 그러나 온도와 질량을 모두 uint
s 로 모델링 하면 바로 그렇게 할 수 있습니다.
내장 유형을 사용하여 DOMAIN 엔터티를 모델링하면 일부 복잡한 코드와 누락 된 검사 및 불변 불변이 발생할 수 있습니다. 유형이 엔티티의 일부를 캡처하더라도 (음수가 될 수 없음) 다른 유형을 놓칠 수 있습니다 (임의의 산술 표현식에 사용할 수 없으며 비트 배열로 취급 할 수 없음).
해결책은 불변량 을 캡슐화 하는 새로운 유형을 정의 하는 것입니다. 이렇게하면 돈이 돈이고 거리가 거리인지 확인할 수 있으며 돈을 더할 수 없으며 음수 거리를 만들 수는 없지만 음수 금액 (또는 부채)을 만들 수 있습니다. 물론 이러한 유형은 내장 유형을 내부적으로 사용하지만 클라이언트 에서는 숨겨져 있습니다. 성능 / 메모리 소비에 대한 질문과 관련하여, 이런 종류의 당신이 그 빌어 먹을을 찾아야한다, 도메인 엔티티에서 작동하여 기능의 인터페이스를 변경하지 않고 내부적으로 저장하는 방법을 가지 변경을 허용 할 수 있습니다, a는 short
너무 망할 그냥 큰.