部分类文件的命名约定

Posted

技术标签:

【中文标题】部分类文件的命名约定【英文标题】:Naming Conventions For Partial Class Files 【发布时间】:2010-12-01 12:08:39 【问题描述】:

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

【问题讨论】:

第 100 个喜欢 :)) 【参考方案1】:

我使用. 分隔 - 例如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

【讨论】:

DependentUpon 的建议非常酷,而且效果很好。感谢您的注意。如果我没看错,你不会简单地使用像“自定义”这样的标准后缀。您的后缀始终表达部分类文件功能的意图。另外,您使用 .与套管相对的分离?是否 .除了提高可读性之外,还能提供什么?谢谢。 正确 - 文件名表明该部分中代码的意图。因此,如果我正在实现一个奇异的接口(并保持代码分开),它可能是SomeType.ICustomTypeDescriptor.cs. (IMO) 将两件事分开:实际类型 (SomeType) 和意图 ICustomTypeDescriptor - 两者都已完全大小写;此外,它与SomeForm.Designer.cs ;-p 之类的东西完美匹配 @Marc Gravell:您是否知道任何提供为文件设置 DependentUpon 功能的 VS 扩展? @Dyppl FileNesting 扩展可以做到这一点【参考方案2】:

更新/免责声明: 2018 年,有人编辑了 Marc Gravell♦ 的答案(上面接受的那个),在他的示例中包含了一个子文件夹。而如何处理有子文件夹的情况是this答案的重点。

如果没有该免责声明,您可能无法理解为什么存在这个答案以及为什么它有这么多选票。


为了补充 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 如果它对任何人都有影响。

以上是关于部分类文件的命名约定的主要内容,如果未能解决你的问题,请参考以下文章

从 XMLNode 中选择是不是算作 SQL Server 中的 3 部分命名约定?

我应该在另一个命名空间中使用实体框架 DBContext 的部分类吗

如何使用 4 部分命名约定在“更新统计”作业中调用链接服务器?

iOS编码规范(文档)

部分类静态类Object类ToString()方法扩展方法的使用

C#部分类与部分方法