4

어셈블리 이름을 하나의 이름으로하고, 어셈블리 내부에있는 폴더의 이름을 지정하고 그 이름을 해당 폴더의 클래스에 넣기 시작합니까? 예를 들어 :미친 명명 규칙을 피하는 방법은 무엇입니까?

List<PreferredTargetLocationPresenter.PreferredTargetLocation> 
newlyAddedPreferredLocations = new 
List<PreferredTargetLocationPresenter.PreferredTargetLocation>(); 

newlyAddedPreferredLocations.add(destinationLocation.PreferredCity);   

이 당신이 더 이상 프로젝트에 대한 작업을 추가하기 시작으로 점점 더 혼란 성장할 것으로 보인다 나에게 :

Project.Presenter 
    Carriers 
     CarriersFindPreferedCarriersPresenter.cs 
     CarriersPreferencesPresenter.cs 
     PreferredTargetLocationPresenter.cs 

Project.Service.Fixture 
    Carriers 
     CarriersServiceFixture.cs 

또는이 학습과, 이와 같은 경우에도 방법을 수행하는 추가 어셈블리 및 방법. 이 작업을 수행하는 더 좋은 방법이 있습니까?

모든 의견을 환영합니다.

답변

4

Pragmatic Programmers는 대중화 이것은 당신이 쓸 수 있습니다 건식 원칙 : 자신을 반복하지 마십시오. 이것은 이름 지정에도 적용됩니다. 동일한 범위 이름이나 접두사를 반복하여 반복해서 사용하면 더 이상 정보가 추가되지 않고 길고 읽기 쉽지 않으며 잘못 입력하기가 쉬우 며 검색하기가 더 쉽습니다. PreferredLocation*으로 시작하는 클래스 이름이 100 개있는 경우 올바른 이름을 찾는 데 어려움을 겪습니다 .-(

클래스와 메소드 이름의 범위는 프로젝트/경로 이름 자바에서는 package이 될 것입니다. C#에서는 적절한 용어가 무엇인지 모릅니다.) 그래서 클래스/메소드의 위치에 대한 모든 정보가 필요하면 정규화 된 이름을 살펴 보는 것으로 충분하지만, 정규 코드에서 어디서나 정규화 된 이름을 사용하도록 강요해서는 안됩니다. 유일한 예외는 이름 충돌입니다. 그러나 규칙 대신 예외로 처리해야합니다.

또한 잘 설계된 응용 프로그램 , 대부분의 메소드/클래스는 전역 적으로 표시되지 않으며 insi 드 그들의 각각의 패키지 (어디 프로그래밍 언어가 허용 - 자바 않습니다, 나는 그 C#도 확신). 이렇게하면 이름 충돌의 위험이 줄어들고 클래스 이름 접두사가 필요하지 않게됩니다.

+0

+1 스코프/글로벌 가시성 언급 – Tanzelax

4

백가지 다른 사람들에게이 질문을하면 100 가지 대답을 얻게됩니다. 나는 어떤 방법으로도 코드 작성/유지를 가장 단순하게하는 팬이다. 이것은 절반의 설명적인 이름이고, 짧고 달콤한 이름은 나머지 절반이다. 코드가 직관적이고 유연한 한 어떤 방식 으로든 문제를 볼 수 없습니다.

3

가끔 긴 이름을 사용해야 할 수도 있지만 일반적으로 가능한 한 짧게 이름을 유지하려고합니다. 열쇠는 설명이 포함 된 이름을 사용하는 것입니다.

2

PreferredTargetLocationPresenter.PreferredTargetLocationPreferredTargetLocationPresenter 유형의 하위 유형입니까? 즉, 수업을 중첩합니까?

그렇다면 PreferredTargetLocation을 자체 클래스로 분리하는 것이 더 나을 것입니다.

List<PreferredTargetLocation> 

대신

List<PreferredTargetLocationPresenter.PreferredTargetLocation> 

당신이 C# 3.0에서 작업하는 경우, 당신은 var을 사용하여 선언을 더 단축 할 수 있습니다 :

var locations = new List<PreferredTargetLocation>(); 
+0

발표자는 UI와 처음으로 발표자를 인스턴스화 할 때로드되는 PreferredTargetLocation 속성이있는 관리자와 같습니다. – Chris