(제목이 있는지, 적절하지 않은 경우 죄송합니다 어떻게 제대로 단어 질문에) (거리 주소와 집, 등)OOP 기본 - C# 리팩토링?
User
(사람)는 Property
를 소유하고있다.
프로젝트를 리팩터링하고 다음과 같은 상황이 발생합니다. 나는 Property
클래스와 User
클래스를 가지고 있습니다.
비즈니스 규칙 : 사용자 은 하나 이상의 속성이입니다.
그럼, 더 의미가 있습니다 :
User.GetProperties()
또는
Properties.Get(userId)
은 현재 내가 User
클래스를 통해 속성에 액세스하고 있습니다. 이 관계를 처리하는 일반적인 방법인지 확실하지 않습니다. 너/할머니가 뭐라 생각하니?
여기 앞으로 생각하고 내가 나중에이 있기 때문에 우려에 대한 이유는 다음과 같습니다
Property.Get(state)
Property.Get(zip)
Property.Get(city)
Property.Get(numberOfBedroom)
등
속성을 얻는 다른 방법은 입니다.은 Property
클래스를 통해 액세스 할 수 있습니다. 권리? (나는 이것에 대해 확고합니다.) 이렇게하면, 이것으로 액세스하는 방법이 변경됩니까 사용자 속성?
업데이트 나는 내가 두 개의 클래스가 말했듯이 제대로의 클래스를 만드는 방법을 요구하고 있지 않다
.내 질문은, 더 나은 진술입니다 :
해야 주어진 시나리오에 대한 내 웹 API (User
은 하나 이상의 Property
[이거]가) :
/api/user/properties/{userId} // get all user properties
또는
api/property/user/{userId} // get all user properties
api/property/zip/{zipCode} // get all properties by zip
api/property/state/{state} // get all properties by state
api/property/city/{city} // get all properties by city
등
지난 3 예 주어진 그래서, 이후 3 경우에 대한 모든 api/property/...
을 구현하는 동안
(A) /api/user/properties/{userId}
를 구현하는 것이
또는
(b) 일관성을 유지하고 api/property/user/...
관점에서 User
의 Property
[ies]를 쿼리 하시겠습니까?
다음,이 질문에 대답 한 후, 난 여전히이 List<Property>
또는
나는 List<Property>
GetByUser(int userId)
방법으로
Property
클래스를 가질 수 반환하는
GetProperties()
방법과
User
클래스를 가질 수있다
현실 세계에서 User
은 하나 이상의 Property
을 가지지 않으므로 주위에 없습니다. 그래서 우리의 기본적인 OOP 본능은 그것을 모델링하는 것이지만 WebApi와 잠재적으로 공개적으로 노출 된 API를 생각할 때 나중에 사용하는 것이 더 좋을 것이라고 생각하지만 User
에서 Propert
을 얻는 C# (서버 쪽) 감각이지만 프런트 엔드 개발자 (jQuery, Angular, JavaScript 등)는 API를 원하고 유창하게 사용하기 때문에 api/property/user/...
은 논리적 일 수 있으며 api/user/propties/...
(또는 내가 볼 수 있습니다.)을 생각하지 못할 수도 있습니다 ...
그래서 어떤 API 메소드를 사용하겠습니까? 왜, 어떤 클래스 모델을 사용할 것이며 그 이유는 무엇입니까?
감사합니다.
업데이트 2
같은 클래스의 메소드를 유창 API의 API를 OOP의 정확성 및 api/property/user/...
에 대한 두 가지 api/user/properties/...
를 생성하고이 모두를 호출 "대답은 모두가 될 수있다"(자신에게 생각)? 권리?
에 대한 유용한 참조 그것은 당신의 비즈니스 규칙은 더 복잡한 것 같다 : 속성 기술자의 목록이, 사용자는 이러한 설명자에 대해 하나 이상의 속성 값을 가질 수 있습니다. 사실입니까? –
커프 추측을 벗어남 - 사용자를 추적/식별하는 것보다 속성을 추적/식별하는 것이 더 중요합니다. 귀하의 API가 등록 정보 및 사용자, ZIP 또는 주에 관한 것보다 관심있는 등록 정보 모음을 가져 오는 다양한 방법에 관한 것이어야한다고 생각합니다. 간단히 말해서, 나는 api/properties/[속성의 일부 속성/{[attribute value]}이 비교적 깨끗하고 이해하기 쉬운 형식을 만들 것이라고 생각한다. –
업데이트 됨, "사용자 (개인)가 재산 (집, 주소 등)을 소유하고 있지 않습니다." –