Соглашения об именах для файлов частичного класса


95

Я создаю большую часть своего кода шаблонов ASP.NET MVC. Все сгенерированные файлы являются частичными классами, в которых используются стандартные соглашения об именах. Например, файл контроллера моего сотрудника называется EmployeeController.cs. Если я хочу расширить EmployeeController с помощью настраиваемой, несгенерированной логики, я создаю второй файл частичного класса с именем EmployeeControllerCustom.cs. Я разделяю настраиваемую и сгенерированную логику на два разных файла, поэтому в следующий раз, когда я сгенерирую EmployeeController, мои пользовательские изменения не будут перезаписаны. Добавление суффикса «Custom» к имени файла кажется мне разумным, но существует ли более устоявшееся соглашение об именах файлов частичного класса, которому я должен следовать?

Ответы:


155

Я использую .разделение - например EmployeeController.SomeSpecialBehaviour.cs. Я также привязываю его к дереву проекта через «independentUpon» или что-то еще в 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 действительно круто и отлично работает. Спасибо, что заметили. Если я правильно читаю, вы не просто используете стандартный суффикс вроде «Custom». Ваш суффикс всегда выражает цель функциональности файла частичного класса. Кроме того, есть причина, по которой вы используете расширение. разделение в противоположность кожуху? Делает ли. предоставить что-то большее, чем улучшенная читаемость? Спасибо.
Бен Грисволд,

11
Правильно - имя файла указывает цель кода в этой части . Так что, если я реализую экзотический интерфейс (и сохраняю код отдельно), это может быть SomeType.ICustomTypeDescriptor.cs. .(ИМО) разделяет две вещи: фактический тип ( SomeType) и цель ICustomTypeDescriptor- как уже полностью упакованным; кроме того, он точно совпадает с такими вещами, как SomeForm.Designer.cs;-p
Марк

Отлично. Спасибо за дополнительную информацию. Если бы я мог сделать больше, чем голосование «за», ваш ответ и оценка как правильные, я бы сделал.
Бен Грисволд,

1
@Marc Gravell: знаете ли вы случайно какие-либо расширения VS, которые обеспечивают функциональность установки DependentUpon для файлов?
Dyppl

2
@Dyppl Расширение FileNesting может это сделать
gt

15

Чтобы добавить к ответу Марка Гравелла ♦, у меня была ситуация с файлами во вложенной папке и 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, если это кому-то важно.
Джошуа К.
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.