부분 클래스 파일에 대한 명명 규칙


93

내 ASP.NET MVC 스캐 폴딩 코드의 대부분을 생성하고 있습니다. 생성 된 모든 파일은 표준 명명 규칙을 사용하는 부분 클래스입니다. 예를 들어 내 직원 컨트롤러 파일의 이름은 EmployeeController.cs입니다. 생성되지 않은 사용자 지정 논리로 EmployeeController를 확장하려면 EmployeeControllerCustom.cs라는 두 번째 부분 클래스 파일을 만듭니다. 사용자 지정 및 생성 된 논리를 두 개의 다른 파일로 분리하여 다음에 EmployeeController를 생성 할 때 사용자 지정 변경 내용을 덮어 쓰지 않습니다. 파일 이름에 "사용자 지정"접미사를 추가하는 것이 합리적으로 보이지만 따라야 할 부분 클래스 파일 명명 규칙이 더 확립되어 있습니까?

답변:


152

.예를 들어 분리를 사용 EmployeeController.SomeSpecialBehaviour.cs합니다. 또한 "dependentUpon"또는 csproj에있는 모든 것을 통해 프로젝트 트리에 연결하여 파일 아래 (솔루션 탐색기에서) 깔끔하게 중첩되도록합니다. 하지만 수동으로 (csproj 편집) 또는 추가 기능을 사용해야합니다. 예를 들면 :

<Compile Include="Subfolder/Program.cs" />
<Compile Include="Subfolder/Program.Foo.cs">
  <DependentUpon>Program.cs</DependentUpon> <!-- Note that I do not reference the subfolder here -->
</Compile>

다음과 같이 나타납니다.

  • 하위 폴더
    • Program.cs
      • Program.Foo.cs

5
DependentUpon 제안은 정말 멋지고 훌륭하게 작동합니다. 주목 해 주셔서 감사합니다. 내가 올바르게 읽고 있다면 단순히 "사용자 지정"과 같은 표준 접미사를 사용하는 것이 아닙니다. 접미사는 항상 부분 클래스 파일 기능의 의도를 나타냅니다. 또한. 케이싱과 반대되는 분리? . 가독성 향상 이상의 것을 제공합니까? 감사.
Ben Griswold

11
정답-파일 이름은 해당 부분 에있는 코드의 의도를 나타냅니다 . 따라서 이국적인 인터페이스를 구현하고 코드를 별도로 유지하는 경우 SomeType.ICustomTypeDescriptor.cs. 은 .(IMO) 두 가지를 분리 : 실제의 형태 ( SomeType)와 의도 ICustomTypeDescriptor- 모두가 이미 완전히 맡았다됩니다; 또한 SomeForm.Designer.cs;-p
Marc Gravell

완전한. 추가적인 통찰력에 감사드립니다. 내가 찬성 투표 이상을 할 수 있다면 귀하의 답변과 표시가 정확합니다.
Ben Griswold

1
@Marc Gravell : 혹시 파일에 DependentUpon을 설정하는 기능을 제공하는 VS 확장을 알고 계십니까?
Dyppl

2
@Dyppl FileNesting 확장은 이것을 할 수 있습니다
gt

15

Marc Gravell ♦의 답변에 추가하기 위해 하위 폴더에 파일이 있고 DependentUpon노드가 무시되는 상황이 발생했습니다 . 부족한 점은 이러한 경우 내 xml이 다음과 같아야한다는 것입니다.

<Compile Include="foo\bar.cs" />
<Compile Include="foo\bar.baz.cs">
    <DependentUpon>bar.cs</DependentUpon>  <!-- Note that I do not reference the subfolder here -->
</Compile>

나는 이것이 누군가에게 도움이되기를 바랍니다 :)


나도. 데이터베이스 우선 프로젝트를 시작하고 모델을 만들 때 모델 다이어그램 안에 넣었 기 때문에 발생했습니다. 누구에게나 차이가 있다면 VS2015.
Joshua K
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.