태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.



Google
 
규칙 클래스 이름: DoNotExposeGenericList
규칙 ID: CA1002
분류: 디자인 규칙
메시지 레벨: 에러
확실도: 95%

원인: System.Collections.Generic.List<T> 타입을 외부로 노출시켰거나, 리턴 타입으로 사용하거나, 혹은 파라미터로 사용했을 때 이 규칙에 위반된다.

규칙 설명
System.Collections.Generic.List<T>는 성능을 위해서 디자인된 제네릭 컬렉션이며 상속성등은 고려되지 않았다. 그래서 어떤 가상 멤버도 그 안에 포함할 수가 없다. 아래의 제네릭 컬렉션은 상속성을 고려해서 디자인되었으므로, 리턴 타입/파라미터/외부 노출 형식에는 아래 타입들을 써야 할 것이다.

원문: http://www.gotdotnet.com/team/fxcop/Docs/Rules/Design/DoNotExposeGenericLists.html

* System.Collections.Generic.List<T>는 MSDN을 보면 나와있듯이 ArrayList의 Generic 버전이라고 생각하면 된다. 즉, 동적으로 크기가 늘어나고 빠르게 접근할 수 있는 특정 구현 형태로 보면 될 것이다.
외부 노출/리턴 타입/파라미터 등은 각 클래스들이 관계를 맺는 방식에 영향을 줄 수 있다. 이런 곳에서 상속할 수 없는 특정 구현 형태를 사용함으로써 그것에 얽매이는 것은 매우 좋지 않다는 것이 바로 이 규칙이 말하는 바라고 생각된다.
이올린에 북마크하기(0) 이올린에 추천하기(0)
크리에이티브 커먼즈 라이선스
Creative Commons License
top

Trackback Address :: http://lazydeveloper.net/trackback/2567045 관련글 쓰기

  1. BlogIcon 카니스 2007/02/21 12:45 댓글주소 | 수정/삭제 | 댓글

    자바쪽도 JDK5부터 generic이 지원됬죠. 무지 좋습니다. 타입을 정의함으로써 내부적으로 메모리 할당이나 속도면에서 획기적으로 바뀌었으니까요.
    그냥 List 보다 List<Integer> 이 더 관리측면에서는 더 좋죠. 물론 사용하는 측면에서도요. ^^

  2. BlogIcon 정성태 2007/02/21 14:12 댓글주소 | 수정/삭제 | 댓글

    FAQ: Why does DoNotExposeGenericLists recommend that I expose Collection<T> instead of List<T>? [David Kean]
    ; http://blogs.msdn.com/fxcop/archive/2006/04/27/585476.aspx

    위의 토픽에서도 잘 설명해 주고 있습니다. ^^

  3. BlogIcon 모모 2007/03/28 16:09 댓글주소 | 수정/삭제 | 댓글

    좋은 정보네요~ ^^

Write a comment


◀ PREV : [1] : ... [22] : [23] : [24] : [25] : [26] : [27] : [28] : [29] : [30] : ... [94] : NEXT ▶