2009-07-11 3 views
6

내가 관련 * .cs를 그룹화하는 것은 자신의 폴더에 함께 날아 개발할 때 조직 유지하려고 좋아 : 아시다시피C# 네임 스페이스/폴더 : 너무 조직화되고/너무 많은 네임 스페이스가 올바르지 않은 경우?

->Project 
--->Enums 
--->Exceptions 
--->Extensions 
--->Providers 
--->Configuguration 
--->Design 
--->etc. 
    Manager.cs 

이, 비주얼 스튜디오는 기본적으로 각 폴더에 대한 새 네임 스페이스를 만듭니다

Company.Product.Enums.MyEnumClass.cs 
... 
Company.Product.Exceptions.ExceptionBase.cs 
etc. 

프로 ...과 단점을 가지고있다.

좋은면이 인텔리로,이 어셈블리가 디자인 된 방법을 알아 내기 위해 사소한 될 것입니다

: 모든 단일 클래스, 열거, 정적 확장 clases을 필요로 원하는 부분 만이 (비교 모든 부분을 확인하고, 비즈니스 엔티티, 관리, 제공 등을 모두 하나의 네임 스페이스.

단점은 ... 당신이 코딩을 얻을 포함의 진짜 더미를 사용하지 끝날 것입니다.

using Company.project.Enums; 
using Company.project.Model; 
using Company.project.Extensions; 
... 
etc. 

그리고이 방법 작업에 문제가있다 ... 확장 기능이 가장 눈에 띄게된다 ... 내가이 일을하는 방식이 훌륭하지 않은 경우 (확장 기능을 사용하는 것을 잊어 버리기 쉽고, 내가 원하는 것을 할 수있는 방법은 이미 있었다는 것을 ...)

그래서 ... 한편으로, 나는 몇 년 동안 해왔 던 방식을 조직하고, 인텔리이 방법이 될 수 머물 수있는 옵션이 어셈블리의 새로운 사용자가 신속하게 기능에 익숙해 지도록 d를 include에 포함하기 만하면됩니다. 다른 방법은 모든 것을 하나의 네임 스페이스에 넣고 어셈블리를 시작하는 방법에 대한 좋은 문서를 작성하는 것입니다. (더 많은 비용이 들며 솔직히, 결코 끝나지 않을 수도 있습니다 작은 프로젝트 등)

네임 스페이스에 대한 공식적인 MSDN 설명서는 어떤 방향으로 갈 것인지에 대한 조언을 제공하지 않습니다. http://msdn.microsoft.com/en-us/library/893ke618(VS.71).aspx

그런데, 내가 길을 바꾸기 전에, 다른 사람들이하고있는 이유는 무엇입니까? 당신은 무엇을하고 있으며, 그 이유는 무엇입니까?

+0

여기에 대해 질문을 받았다 나타납니다 : http://blogs.msdn.com/joen/archive/2004/03/15/90002.aspx –

답변

9

내가 잘못 구성했다고 생각합니다. 열거 형/확장자 등으로 구성하지 마십시오. 형식 사용 방법으로 구성하십시오. 관련 유형을 함께 넣으십시오.

또한 참조한 지침은 .NET 1.1! 단서는 URL의 V7.1입니다. 올바른 참조는 Design Guidelines for Developing Class Libraries의 일부인 Names of Namespaces입니다.

+0

안녕 존 : 감사를 업데이트 된 링크를 확장 않는다 피사체에 최소한 한숨 돌리는 사람. 모든 것이 함께 정리되어야하는 것처럼 보입니다. 그리고 때로는 한 네임 스페이스에서 많은 클래스로 이어집니다. 심지어 사소한 예를 고려, 하나의 DLL : * 비즈니스 엔티티, * 인터페이스, 그들이 구현 BizEntities 것을 ... BE 속성 에 사용 * 열거 형 * 건물 인 BE의에 * 확장을 설정할 때 제기 예외. .. 다른 기능/그룹에 대해서도 말하지 않았습니다. 딱 하나만. 그리고 한 네임 스페이스에서 80 개 이상의 클래스로 쉽게 이어질 수 있습니다. 댓글? –

+2

아니요, 모든 항목을 함께 묶어서는 안됩니다. 그것은 코드의 기능적 영역에 의해 조직되어야합니다 - 단지 어떤 종류의 유형인지에 의해서가 아닙니다. –

+0

안녕하세요 John : 다시 한 번 감사드립니다. 나는 당신이 기능적인 경계를 어떻게 생각하는지 이해하는데 약간의 어려움을 겪고있다. 메시지를 처리하기위한 어셈블리와 그 다음 공급자 팩토리가 있다면 어떻게 분해 할 수 있습니까? 공통 엔티티 (Message, Attachment, Address, Headers)로 모두 처리하고 일반적인 MessageExceptions를 발생 시키며 일반적인 Enum (MessagePriority, 중요도 등)을 사용하고 하나의 MessagingManager + 여러 제공자 (LLBLGenBasedProvider, InMemProvider 등)를 사용합니다. 모두 하나의 기능 영역 : 메시지. .. 함께 덩어리, 또는 하위 NS에 침입? 그렇다면 무엇을/어디에서? –

관련 문제