部分类文件的命名约定


93

我正在生成大量的ASP.NET MVC脚手架代码。所有生成的文件都是使用标准命名约定的部分类。例如,我的员工控制器文件名为EmployeeController.cs。如果希望使用自定义的,未生成的逻辑扩展EmployeeController,则创建另一个名为EmployeeControllerCustom.cs的部分类文件。我将自定义和生成的逻辑分为两个不同的文件,因此,下次生成EmployeeController时,我的自定义更改不会被覆盖。在文件名中添加“自定义”后缀对我来说似乎很合理,但是我应该遵循更完善的部分类文件命名约定吗?

Answers:


151

我使用.分离-例如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
马克·Gravell

完善。感谢您提供其他见解。如果我能做的比上投更多,那么您的回答和评分将是正确的。
Ben Griswold

1
@Marc Gravell:您是否偶然知道提供了为文件设置DependentUpon功能的VS扩展?
Dyppl 2011年

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,如果它对任何人都有不同。
约书亚K,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.