2011-08-03 12 views
2

다음 시나리오에 대한 명명 규칙이 있으면 dll 및/또는 힌트의 올바른 이름 지정에 대한 제안이 필요합니다.C# .net - 인터페이스/구현 시나리오의 DLL 명명 규칙

나는 하나의 dll에 캡슐화 된 인터페이스 정의에 의해 사용되는 인터페이스 정의와 여러 유형이있다. 그럼 다른 DLL 에서이 인터페이스의 구현을했습니다. 이 상황에 대한 "특별한"점은 필자가 응용 프로그램을 개발하는 것이 아니라 회사의 여러 응용 프로그램에서 사용되는 기능 모음 (일명 프레임 워크)을 더 많이 개발한다는 것입니다. 이러한 기능은 MEF를 통한 인터페이스 정의를 통해 액세스되므로이 프레임 워크의 사용자는 일반적으로 dll을 구현하는 데있어 그 사실을 알지 못하거나 중요하지 않습니다 (인터페이스 정의가 들어있는 dll 만 알고 참조해야하기 때문에).). 실제로 드문 경우에는 구현을 DLL로 구현하는 방법을 알기를 원할 수 있습니다.

  • 인터페이스 정의와 DLL이이 사용자가 참조하는 DLL이기 때문에 잘 명명 할 필요가 :

    는 내 DLL 이름 지정에 대한 몇 가지 요구 사항을 만들었습니다.
  • 인터페이스 정의 dll의 네임 스페이스는 매우 잘 명명되어 있어야하며 (사용자 인터페이스가 매우 직관적이어야하므로) 사용자가이 네임 스페이스에서이 정의를 실제로 기대할 수 있습니다. 네임 스페이스가 솔루션 구조와 동일한 최적의 위치가됩니다.
  • 구현 DLL의 이름은 매우 명확해야하므로 사용자는 작업 디렉토리에서 dll을 식별하여 제거하고 자체 구현을 설치할 수 있습니다.
  • 구현의 네임 스페이스는 내부적으로 만 사용되므로 별 문제가되지 않습니다.
  • dll 이름은 너무 길어서는 안됩니다.

첫째, 나는 그룹 DLL에 모든 "서비스"MyCompany라고 할 수 있습니다 예를 들어 있기 때문에 하나의 DLL에있는 특정 유형의 모든 인터페이스 정의, 즉 아주 잘라는 이름의 네임 스페이스를 만드는 것 그룹에 아이디어를 내놓았다 .Services.dll, 네임 스페이스 MyCompany.Services를 만드는 해당 루트에 모든 정의와 유형을 넣으십시오. 따라서 솔루션 구조가 네임 스페이스와 동일하게 유지됩니다 (유용하거나 그렇지 않은 경우 여기에서 설명 할 수도 있음).

는하지만 그것은 큰 문제가 발생하는 경우를

I 서명 DLL을 내 MyCompany.Services.dll 뭔가를 변경, 나는 이러한 변화는이 n 개의 DLL 중 하나에 영향을 미치는 경우에도 모든 구현은 DLL을 다시 컴파일해야합니다. 이 시점에서 필자는 각 인터페이스 정의 및 유형을 자신의 dll에 넣을 것을 고려했습니다 (이 게시물의 시작 부분에 설명되어 있음). 가치

+0

두 개의 단락을 추가하는 것은 나쁜 생각이 아닙니다. –

+0

난 그냥 그랬어, 편집기에서 복사 된 텍스트를 처리 할 수없는 것 같습니다 ms word =) – Basti

+0

.Net (내 생각에, 언급되는 MEF로 인해)? C++? 태그가 이것을 지정하지 않습니다 ... –

답변

0

내 2 센트 : 당신의 프레임 워크의 일부 모든 것이 쉽게 식별 할 수 있도록

  • 공통 최상위 네임 스페이스를 사용합니다. 당신은 그것을 "필요로하지"않을지도 모르지만 그것은 단지 어리석은 것처럼 보이지 않습니다.
  • 설명이 포함 된 이름을 사용하십시오. Basti.SpecialFramework.Interfaces.DataAccess.Customer과 같은 것은 나에게 많은 의미를 줄 것입니다.
  • 시스템의 구조/아키텍처 주변에 네임 스페이스를 구성하면 lots가이됩니다.
  • 잘 구조화 된 네임 스페이스 트리를 갖는 것은 같은 장소, 예를 들어, 키 작업/용어의 해석에 도움이됩니다.g : Basti.SpecialFramework.Interfaces.DataAccess.Customer vs Basti.SpecialFramework.BaseImplementations.DataAccess.Customer
  • 정보 아키텍처를 개발하거나 사용성 테스트를하는 것처럼 조금 다루어보십시오. 초안 이름을 제안하고 친구들이 알아낼 수 있는지 확인하십시오. Card Sorting 연습의 동등한 일을하십시오 - 그것을 구성하십시오 : [Layer]. [Interface/BaseImplementation] 또는 [Interface/BaseImplementation]. [Layer]? (정확하게 카드 정렬 운동을하는 방법을 정확히 모르겠지만 강력한 평행선을 볼 수 있습니다.)
  • 설명이 포함 된 이름은 오래 걸리는 경향이 있습니다. 나는 긴 이름이 "쉽고"편리하지 않을 수도 있다는 것에 동의하지만, 그들이 내가 알기를 원하는 것을 명확하게 전달한다면 나는 그것에 대해 괜찮을 것이다.

덧붙여서 : 나는 DLL과 Assemblies의 명명 규칙이 틀림 없음을 확신합니다. 나는 그들이 Google/Bing 할 수 있었다고 생각하지만, 이미 그렇게했다고 생각합니다.