2014-05-12 6 views
3

저에게있어, 명명은 소프트웨어 엔지니어링에서 중요한 개념입니다. 이런 이유로, 디자인 패턴에 대한 열렬한 팬입니다. 왜냐하면 일반적으로 발견되는 패턴/객체의 적절한 이름을 제공하기 때문입니다.OOP 언어로 객체의 이름을 지정할 때 "map"과 "transform"의 차이점은 무엇입니까?

IDictionary<long, User> _userIdMap = new // ... 

public class UserMapper 
{ 
    UserModel ToModel(UserViewModelModel viewModelModel) { ... } 
    UserViewModelModel ToViewModelModel(UserModel model) { ... } 
} 

그러나 최근에 나는이 자연의 개체가 프로젝트에 참여 :

목적이 다른 하나의 개체를 변환하는 객체를 생성하고, 그 반대로, 나는 보통 "지도"이름을 사용 트랜스포머 (Transformers) '라고 불리는 이유를 이해할 수 있습니다.

명백한 양방향 일대일 관계가있을 때 "지도"라는 용어가 적절하다는 것을 이해할 수 있습니다. ObjectA를 ObjectB에 "매핑"할 수 있으면 ObjectA를 ObjectB에 "매핑"할 수 있습니다. 그 관계가 일방적 인 것이라면 (고전적 컴퓨터 과학 용어로 볼 때 진정으로 "지도"가 아님).

매퍼, 변환기, 변환기 또는 한 개체를 다른 개체로 변경하는 개체의 다른 기존 이름 (기존에는 언급하지 않음)이 기존의 구분되어 있습니까? 그렇다면 다음과 같은 경우에 고려해야 할 묘사 또는 규칙을 고려해야합니다. 이 객체의 이름을 지정 하시겠습니까?

+0

귀하의 해석에 동의합니다. 아마도 당신은 범주 이론을보고 싶습니까? – yaccz

답변

4

컴퓨터 과학에서 "지도"는 알려진 값/실체를 다른 알려진 값/실체에 연결하는 데 사용됩니다. 예를 들어 ObjectA를 ObjectB에 매핑 할 수 있습니다.

"변환"은 허용 가능한 값을 함수를 사용하여 다른 값으로 변환/변환하는 데 사용됩니다. x^2를 계산하는 "변환"; x는 임의의 값일 수있다. 오브젝트/값의 유한 세트 분명한 관계가있는 경우에지도에 "엄지 손가락의 법칙"로 그러므로

는이 값의 비 한정 세트를 다루는 경우 표기 변환 반면 표기/엔티티. 함수를 사용하여 값을 계산해야합니다.

+3

또는 이와 동등한 방법으로지도를 조회하고 * 반면 변환을 수행합니다 *. –

+0

@PaulHicks 그렇습니다. "유한 한 객체/값 집합은 명확한 관계가 있습니다."라고 말하면지도가 "조회 된"것을 의미합니다. "look up"과 "performed"를 분명히 말하면 +1합니다. –

+0

이것은 OOP 나 디자인 패턴과는 거의 관계가 없습니다. 모든 CS에서 일반적인 용어입니다. (하지만지도가 무한 할 수도있는 수학에서는 그렇지 않습니다.) –