例如,我有这个Web Api控制器类AdministratorController
,它包含许多任务:
现在,所有这些任务都保存在1个文件AdministratorController.cs
中。但是带有所有注释和注释的文件相当长。
将这个控制器分成partial class
个 是一种好方法,以使搜索特定功能的开发人员可以更快地到达目的地吗?还是滥用partial
关键字
例如,我的文件夹结构为:
答案 0 :(得分:6)
显然,这是一个有根据的答案。从技术上讲,是的,您可以。它将编译。
我认为将文件分成多个文件是正确的。
您可以有部分课程。或者,您可能只有多个课程。没有人会强迫您将所有这些方法都放在一个控制器中。
就个人而言,出于实际原因,我选择参加多个课程。您可能会进行依赖项注入,并且可能通过构造函数注入来进行依赖注入,因为这是默认设置。对于部分类,这仅意味着一个大类但有多个文件,您现在需要编辑当前文件 plus 构造函数所在的文件以添加新服务。这也意味着所有方法都需要注入DeleteDataService
,尽管只有Delete
方法使用了它。如果每个方法有一个控制器,则将构造函数放在同一文件 中,而其他类则不依赖于它。
但是,例如,如果您通过方法中的[FromService]
属性进行注入,那么两种选择之间几乎没有什么区别。
如果将它们保存在一个文件中太长,则将它们构造在不同的文件中是好。太好了,即使您选择了“错误”的方法,我也认为这不会太糟。因此,选择对您来说最实用的一种。
答案 1 :(得分:1)
这取决于您所说的“可读性”。在一定程度上,我们必须阅读一堂课,只要将我们阅读的内容放在单独的文件中,它就不会减少。两种方式都有很多读物。甚至可能在遍历类的各个部分跨越单独的文件来寻找特定成员的时候会很麻烦。
部分类可能会使我们感觉,就像我们实际上只是在制作更大的类时分离代码一样。如果我们认为使用局部类使事情变得更简单,那么它们可以鼓励我们在单个类中添加更多内容,同时将其分成不同的文件,从而使代码更难以理解。
我不反对局部类。这些东西只有在有用途的情况下才存在,我并不是要暗示使用它们的任何人都在滥用它们。一个示例是自动生成的类,例如当我们添加服务引用时(我们仍要这样做吗?),我们可能会对类进行一些修改,但是如果更新服务引用并重做自动生成,它们就会丢失。如果将自定义代码放在部分类中,那么我们可以生成一部分,而其余部分保持不变。