2011-08-19 6 views
4

저는 MVC 애플리케이션을 사용하고 데이터를 조작, 검증, 업데이트 및 읽기/쓰기하는 리파지토리를 작성해 왔습니다. 모두 정적입니다. 다음은 예입니다내 저장소 메소드가 정적이 아니어야하는 이유가 있습니까?

public static int Create(user u) 
{ 
     using(DataContext db = new DataContext()) 
     { 
      //do the thing and submit changes... 
     } 

     //return the new user id 
} 

(참고 :이 그냥 샘플, 나는 사용자 ID 등 사용자를 만들거나 반환에 대한 팁을 찾고 있지 않다이다)

그리고 내가 할 수있는을 그냥 int id = RepoClassName.Create(userVariable);

이와 같은 정적 방법 사용에 문제가 있습니까? 나는 왜 내가 이것을하기 위해 객체를 인스턴스화해야하는지 알지 못한다.

답변

2

글쎄, 만약 당신이 분리하고, 테스트하고, 당신의 "저장소"를 쉽게 유지하려고하지 않는다면, 나는 정적이라고 생각합니다.

정적 메서드가 코드 냄새로 간주되는 이유에 대해 자세히 알고 싶다면 here's a nice article at the Google Testing Blog. 이것은 물론 코드를 테스트하는 데 신경 쓰는 것으로 가정합니다.

하지만 2011 년입니다. 누가 그렇지 않을까요?

+2

나는 이해할 수 없다. 정교한 케어? 모두는 실제로 아무 것도 설명하지 않고 같은 말을 한 것처럼 보입니다. – BigOmega

+0

[게시물에 수정 된 댓글.] –

0

저장소 인스턴스가 여러 개 필요할 경우 라인이 다운 될 수 있습니다. 그렇지 않을 수도 있습니다. 또한 메서드가 정적 인 경우 종속성 삽입을 사용하지 못할 수도 있습니다.

0

저장소에 정적 메소드를 사용하는 것을 권장하지 않습니다. 삽입 된 종속성은 인스턴스 메소드에서만 정적 메소드에서 사용할 수 없으므로 저장소에서 종속성 삽입을 사용할 수 없습니다. 테스트는 어려울 것입니다.

관련 문제