Konwencje nazewnictwa dla częściowych plików klas

94

Generuję większość mojego kodu szkieletu ASP.NET MVC. Wszystkie wygenerowane pliki są klasami częściowymi, które używają standardowych konwencji nazewnictwa. Na przykład mój plik kontrolera pracownika nosi nazwę EmployeeController.cs. Jeśli chcę rozszerzyć EmployeeController o niestandardową, nie generowaną logikę, tworzę drugi plik częściowej klasy o nazwie EmployeeControllerCustom.cs. Oddzielam logikę niestandardową i wygenerowaną na dwa różne pliki, więc następnym razem, gdy wygeneruję kontroler EmployeeController, moje niestandardowe zmiany nie zostaną nadpisane. Dodanie sufiksu „Niestandardowy” do nazwy pliku wydaje mi się rozsądne, ale czy istnieje bardziej ugruntowana konwencja nazywania plików klas częściowych, której powinienem przestrzegać?

Ben Griswold
źródło

Odpowiedzi:

154

Używam .separacji - na przykład EmployeeController.SomeSpecialBehaviour.cs. Łączę go również z drzewem projektu za pomocą „dependUpon” lub czegokolwiek, co jest w csproj, tak aby zgrabnie zagnieżdżał się pod plikiem (w eksploratorze rozwiązań). Musisz to jednak zrobić ręcznie (edytuj csproj) lub za pomocą dodatku; na przykład:

<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>

pojawia się jako:

  • Podfolder
    • Program.cs
      • Program.Foo.cs
Marc Gravell
źródło
5
Sugestia DependentUpon jest naprawdę fajna i działa świetnie. Dzięki za uwagę. Jeśli dobrze czytam, nie używasz po prostu standardowego sufiksu, takiego jak „Niestandardowy”. Twój sufiks zawsze wyraża intencję funkcjonalności pliku częściowej klasy. Czy istnieje powód, dla którego używasz. separacja a nie obudowa? Czy. zapewnić coś więcej niż lepszą czytelność? Dzięki.
Ben Griswold,
11
Prawidłowo - nazwa pliku wskazuje przeznaczenie kodu w tej części . Więc jeśli implementuję egzotyczny interfejs (i oddzielam kod), może tak być SomeType.ICustomTypeDescriptor.cs. .(IMO) oddziela dwie rzeczy: rzeczywisty typ ( SomeType) i intencją ICustomTypeDescriptor- oba są już w pełni powlekanego; poza tym idealnie pasuje do takich rzeczy jak SomeForm.Designer.cs;-p
Marc Gravell
Idealny. Dzięki za dodatkowy wgląd. Gdybym mógł zrobić coś więcej, zagłosuj na twoją odpowiedź i oceń jako poprawną.
Ben Griswold,
1
@Marc Gravell: czy przypadkiem znasz jakieś rozszerzenia VS, które zapewniają funkcjonalność ustawienia DependentUpon dla plików?
Dyppl
2
@Dyppl Rozszerzenie FileNesting może to zrobić
gt
15

Aby dodać do odpowiedzi Marca Gravella ♦, miałem sytuację z plikami w podfolderze i DependentUponignorowaniem węzła. Krótko mówiąc, w takim przypadku mój xml musiał być:

<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>

Mam nadzieję, że to komuś pomoże :)

Bezimienny
źródło
Ja też. stało się tak, ponieważ zacząłem projekt w bazie danych, a kiedy tworzyłem model, umieściłem je w diagramie modelu. VS2015, jeśli to coś zmienia.
Joshua K