2008-10-08 4 views
2

매우 일반적인 정적 메서드가 포함 된 정적 '유틸리티'클래스의 대규모 컬렉션이 있습니다. C# 3.0 내가 확장 방법에 이러한 변환 봤는데와 등정적 클래스 라이브러리 대체

공공 정적 무효 RemoveDuplicates (ICollection에 수집) ... 예를 들어, 내가 좋아하는 유용한 방법이있는 CollectionUtility 클래스가 있습니다.

이제는 '엔터프라이즈 수준'응용 프로그램에서 이러한 정적 클래스 및 메서드의 대형 라이브러리를 피하는 것이 가장 좋은 방법이라고 종종 들었습니다. 나는 그것이 유지하기가 매우 어려울 수 있다고 상상한다.

대기업을 위해 대기업 프로젝트를 수행하는 사람들을위한 질문 - 다음과 같은 유틸리티 클래스의 라이브러리를 유지합니까? 너 뭐야?

+0

언어 관련 질문에 언어로 태그를 답니다. – camh

+0

Nitpick : "C# 3.5"같은 것이 없습니다. "C# 3.0"또는 ".NET 3.5"또는 둘 모두를 참조하십시오. –

답변

1

당신은 공유 된 라이브러리 물건이 될 코드에 대해 이야기하고 있습니다. 정적 메소드에는 공유 라이브러리가 있습니다. 나는 다음 지침을 따르 것 System.Linq.Enumerable

를 체크 아웃 :

  • 이 기본적으로 정적 방법은 없습니다. 자연스럽게 상태 비 저장 (매개 변수에만 의존하는 동작)이기 때문에 정적 메서드 여야합니다. 자연스럽게 비 국적자가 아닌 경우 해당 주를 관리하기 위해 적절한 클래스를 만들어야합니다.
  • 단위 테스트로이를 처리하십시오. 단위 테스트를하지 않으면 단위 테스트를하십시오. 이 작업은 매우 쉽습니다. 쉬운 일이 아니라면, 이것은 옳지 않습니다.

의존성 주입이 마음에 드신다면, 여전히 가질 수 있습니다. 정적 메서드에 의존하는 코드는 대신 정적 메서드를 참조하는 Func (T, U) 또는 Action을 호출 할 수 있습니다.

0

절대적으로 아닙니다. 유틸리티 모듈은 시간이 지남에 따라 많은 양의 코드를 수집합니다.

0

일반적으로 구성 및 상수와 같은 항목은 싱글 톤 또는 정적 클래스에만 넣습니다. 변경되지 않으며 "글로벌"일 수도 있기 때문입니다.

+0

구성이 변경되지 않습니다. -1 당신을위한 수프가 없습니다. –

+0

나는 충분히 명확하지 않았다, 나는 믿는다. 즉, web.config에서 값을 가져 오는 속성과 같이 응용 프로그램 수명주기에서 결코 변하지 않는 값을 의미합니다. – mannu

+0

나는 네가 부정적으로 여기있는 곳에서 너를 버리겠다. – joelc

0

'엔터프라이즈 수준'응용 프로그램에서 이러한 정적 클래스 및 메서드의 대형 라이브러리를 피하는 것이 좋습니다. 나는 그것이 유지하기가 매우 어려울 수 있다고 상상한다. 당신은 제네릭과 같은 일을 적용해야 이럴

는 유틸리티 메소드/라이브러리의 크기를 줄이려고하고, 당신은 단지 한 곳에서 유틸리티 메소드를 사용하는 경우, 그것은 공유 라이브러리에 속해 있지 않지만, 하루가 끝나면 여전히 많은 일을 할 것입니다.

어쨌든, 이것은 당황 스럽습니다. 공유 라이브러리에 넣지 않으 셨다면 어디에 넣으시겠습니까? 복사 한/붙여 넣기 각 프로젝트 또는 뭔가 그 같은 미친?