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

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, если это кому-то важно.
Джошуа К.