部分类文件的命名规范

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

第100个赞:)) - Chandraprakash
2个回答

178

我使用.进行分割——例如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 suggestion” 很棒,而且非常有效。感谢您的指引。如果我理解正确,您不仅使用标准后缀如“Custom”。您的后缀总是表达出部分类文件功能的意图。此外,您为何使用 . 分隔符而非大小写? . 提供了除了更好的可读性之外的其他内容吗?谢谢。 - Ben Griswold
12
正确 - 文件名反映了代码在 那部分 的意图。因此,如果我要实现一个奇特的接口(并且将代码分开),那么文件名可能是 SomeType.ICustomTypeDescriptor.cs. (在我看来)分隔了两个东西:实际类型(SomeType)和意图 ICustomTypeDescriptor - 两者已经完全区分大小写;此外,它与 SomeForm.Designer.cs 等内容很匹配 ;-p - Marc Gravell
1
@Marc Gravell:你是否知道有哪些 Visual Studio 扩展可以提供设置文件 DependentUpon 功能的? - Dyppl
2
@Dyppl FileNesting 扩展可以完成这个功能。 - g t
1
@JohnB 是的,否则它们就是不同类型。 - Marc Gravell
显示剩余2条评论

19

更新/免责声明: 2018年,有人编辑了Marc Gravell♦的答案(即上面被接受的答案),在其中加入了一个子文件夹。如何处理子文件夹的情况是答案的重点。

如果没有这个免责声明,您可能不理解为什么会有这个答案,以及为什么它有那么多赞。


除了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可能会有所不同。 - Joshua K

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接