문제

나의 배경은 주로 자바 개발자,그러나 요즘 내가 하고 있는 일부에서 작동 합니다.NET.그래서 나는 하려고 하는 몇 가지 간단한 프로젝트에서 집에서 더 얻을 수 있습니다.NET.나는 전송할 수 있 제 Java 경험과 함께 일합니다.NET(특히 C#)지만,유일한 것은 정말 난 나는 네임스페이스입니다.

내가 알고 있는 네임스페이스와 비슷한 Java 패키지지만,무엇을 말할 수 있는 주요한 차이는 자바 패키지들이 사용하는 실제 파일 폴더에 보여 분리하는 동안,습니다.NET 지 않고 모든 파일이 있는 단일 폴더에와 네임스페이스 단순히 선언에서 각 클래스입니다.

난이 이상하다고 생각하기 때문에,나는 항상 본 패키지를 구성하는 방법으로 관련 코드,그것을 쉽게 이동 및 이해합니다.기 때문이다.NET 그것은 작동하지 않는 이 작품은 이 방법으로,초과 프로젝트에 나타납니다 더 혼잡하지 않으로 쉽게 탐색 할 수 있습니다.

나는 뭔가요?내가 있어야합니다.아야 할 것을 끊으로 별도의 프로젝트에서 이 사태의 해결책은 무엇일까요?또는 더 좋은 방법이 있을 유지하는 클래스와 파일을 조직 내에서 프로젝트가 있습니까?

편집:으로 블레어 총리는 지적이 거의 동일한 질문 .

도움이 되었습니까?

해결책

주장할 수 없습니다 그것은 최고의 연습,그러나 제가 종종 파일 참조 조직에서 디렉토리 구조를 반영하는 네임스페이스가 있습니다.맞는 경우 당신의 정신의 모델은 코드,더 나은 다음 그래서-난 어떤 생각할 수 없다.단지 때문에.NET 지 않는 모델을 시행 간의 관계는 네임스페이스,프로젝트,그리고 디렉토리 구조를 의미하지 않을 수 없다 이러한 관계 당신이 원하는 경우.

나는 조금의 의심이 깨고 코드로보다 더 많은 프로젝트야 할 수 있으므로,느린 컴파일하고 조금 추가의 오버헤드가 있을 때를 관리하는 여러 어셈블리입니다.

편집:이 질문에는 거의 중복의 해야의 폴더에서 솔루션에 맞는 네임스페이스?

다른 팁

Yep,습니다.NET 네임스페이스에 의존하지 않는 파일 시스템이나 다른 아무것도.그것은 큰 장점이다.예를 들어 분할할 수 있습니다 당신의 코드에 걸쳐 다른 어셈블리할 수 있는 유연한 배포합니다.

에서 일할 때 Visual Studio IDE 경향을 소개하는 새로운 네임스페이스를 추가할 때 새로운 폴더를 프로젝트 나무입니다.

여기에는 유용한 링크를 사용됩니다.

네임스페이스 이름 지침

일반 규칙에 대한 이름 지정 네임스페이스 을 사용하는 것이 회사는 이름 기술 선택적으로 이름 기능 및 디자인은 다음과 같습니다.
회사.TechnologyName[.특징][.디자인]

물론 사용할 수 있는 네임스페이스 방법을 찾기가 더 적당합니다.그러나 만약 당신을 공유하는 코드,내가 권하고 싶습니다와 함께 갈 수있는 허용 표준이다.

편집:

을 추천합니다.net 개발자의 사본을 얻을 수 Design guidelines 이 책을 이해하는 데 도움이 될 것입니다 는 방법 .NET 설계되어 있습니다.

VS 솔루션의 일반적으로 포함 하나 이상의 프로젝트입니다.Thse 프로젝트는 기본 네임스페이스(일반적으로 네임스페이스 단지의 이름을 프로젝트).일반적으로 추가할 경우 폴더 내에서 프로젝트의 모든 클래스에서 그것은 것입니다 이름은 다음과 같습니다:

DefaultNamespace.폴더 이름.ClassName

물론,기본값을 변경할 수 있습의 네임스페이스 프로젝트를 당신의 클래스 라는 이름에는 어떤 방법으로 합니다.

로우/침입하는 방법으로 물건을 프로젝트는 물질의 경험과/또는 기본 설정.그러나,당신은 절대적으로 줄일 것으로 내에서 프로젝트 솔루션을 유지하기 위해 귀하의 프로젝트 구성됩니다.를 관리하는 경우가 너무 많은 어셈블리가 복잡고(Blair)제안할 수 있습니다 항상 ILMerge 어셈블리로 하나의 어셈블리입니다.What's 에 대한 위대한 ILMerge 는 경우에도 끝까지 하나의 어셈블리,모든 당신의 클래스가 유지 원래의 완전한 이름입니다.

그것은 또한 중요한 기억하는 대한 솔루션에 대해 코드-ie.지 않는다.대한 솔루션이 있지만 아무것도하는 방법 그룹 프로젝트그것은 프로젝트가 내장되어 있으로 설정 DLLs.

마지막으로,대를 추가하자"가"폴더를 어디서나 솔루션입니다.이 폴더를 지도하지 않 폴더에 파일시스템과 같은 다으로 사용되는 또 다른 의미를 구성하는 데 도움이 되는 귀하의 프로젝트 및 기타 유물에 솔루션입니다.

네임스페이스는 논리적으로 그룹화하는 동안,프로젝트는 물리적인 그룹입니다.

그것이 중요한 이유는 무엇입니까?생각합니다.NET2.0,3.0,3.5..NET3.0 은 기본적으로합니다.NET2.0 몇 가지 추가 어셈블리,3.5 추가 약간 더 어셈블리입니다.그래서 예를 들어,.NET3.5 추가 DataPager 컨트롤 웹 통과해야에서 분류 System.Web.UI.WebControls.는 경우 네임스페이스 및 실제 위치를 동일했다,그것은 할 수 없기 때문에 그것은 다른 어셈블리입니다.

그래서 갖는 네임스페이스로 독립적 논리체할 수 있음을 의미합의 구성원 여러 가지 어셈블리는 논리적으로 모든 그룹이 함께하기 때문에 그들은 의미를 함께 사용됩니다.

(또한 아무것도 없으로 틀의 물리적 및 논리적 레이아웃은 매우 유사하다.)

실제로,.Net 환경할 수 있습을 던져 당신의 코드에 IDE/파일시스템과 같은 스파게티입니다.

는 것을 의미하지는 않는 의미 이러한 접근은 제정신,그러나입니다.일반적으로 좋은 아이디어와 막대기 project.foldername.Class 는 접근 방식이었다 언급했다.또한 정말 좋은 생각을 유지하는 모든 클래스에서는 네임스페이스로 같은 클래스입니다.

자바에서,당신이 할 수 있는 터져 같은 것들뿐만 아니라 이것을 받고"모든 유연성"당신이 원하는지만,도구하는 경향이 있게 하지 않는 것이 좋습니다.정직하게,하나의 가장 복잡한 일들이 나를 위해서 소개되고 있다.Net 세계가 얼마나 실수/일치하지 않는 이할 수 있습 덕분에 상대적으로 가난한 안내합니다.을 구성하는 것을 미친 듯이와 작은 생각,하지만.:)

의 차이입니다.net 네임스페이스는 아무것도 할 일이 많이와 자바 패키지가 있습니다.

.net 네임스페이스를 순수하게 관리하는 선언적인 범위,그리고 아무 상관이 없이 파일,프로젝트 또는 자신의 위치입니다.

그것은 매우 간단한 모든 것을 선언에서 특정 네임스페이스에 액세스할 수 있을 때 를 포함하'사용'하는 네임스페이스가 있습니다.

매우 쉽습니다.

는 이름의 선택과는지/얼마나 많은'.'seperators 를 사용은 전적으로 귀하에게 달려 있습니다.

대 기본값으로 추가됩니다.foldernames 귀하의 네임스페이스 단면도 도움이 될 것이다.

이 문서에서 설명한 네임스페이스를 아주 잘:http://www.blackwasp.co.uk/Namespaces.aspx

그것은 또한 예제는 이름 지정 규칙의 끝으로,하지만 당신의 이름 규칙은 귀하의 전화!;)

즉,대부분의 장소에서 일하고 난 사람들이 일을 시작으로 회사 이름을 합리적으로,그것은 typenames 는 회사별(별도의에서 다른,라이브러리의 공급 업체,오픈 소스 projcts etc.)

폴더를 추가할 수 있습의 해결책에 대한 각각의 네임스페이스가 있습니다.는 동안 그것은 아직도 컴파일하는 단일 실행,그것은 조직이 소스 파일공(나)하여 원하는 효과가 있을까요?

나는 일반적으로 폴더를 추가한 각각의 네임스페이스 내에서 프로젝트의 둥지에 따라 동일한 계층 구조(프로그램이 setup.보기입니다.대화 상자는 예를 들어)

네임스페이스를 순수하게 의미.는 동안 그들은 일반적으로 반영하는 폴더 구조에서 최소 사용하는 경우 Visual Studio IDE 그들이 필요하지 않습니다.

할 수 있는 동일한 네임스페이스에서 참조되는 여러 개의 라이브러리,추악지만 사실입니다.

나는 항상 소스 파일에 조직 및 할당하는 식별자를 클래스 및 객체 두 가지 별도의 문제입니다.I 을 유지하는 경향이 관련 클래스에서는 그룹,하지만 모든 그룹이 되어야 네임스페이스가 있습니다.네임스페이스(더 많거나 적은)의 문제를 해결하기 위해 이름의 충돌에서 평 네임스페이스는 같은 언어로는 C,당신은 걸을 수 없어서 두 발이 걸려 넘어없이 다음과 같 식별자 mycompany_getcurrentdateMYCGetCurrentDate, 기 때문에,위험의 충돌하는 다른 기능에서 제삼자(또는 시스템)라이브러리는 훨씬 작다.을 만든 경우는 패키지로 또는 네임스페이스에 대한 모든 논리적 분리,당신을 얻을 것입(Java 예)클래스 이름 java.lang.primitivewrapper.numeric.Integer, 꽤 많은입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top