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

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

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


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.