C# 控制器类包含的方法太多

C# 控制器类包含的方法太多,c#,asp.net-mvc,C#,Asp.net Mvc,我目前正在维护一个应用程序,不幸的是,我们最终使用了太多的操作方法。除此之外,该项目的体系结构从一开始就不公平,每个开发人员都继续在控制器类的操作方法中添加业务逻辑,而不是将其保留在另一个业务层中。 所以现在我们的一个控制器类已经有15000行代码了,我不想通过添加另一个action方法来淹没这个类 关于如何重构它,或者我们可以使用任何部分控制器类或其他更好的方法,有什么建议吗 注:我知道我们可以通过将代码移动到另一层来使用精简控制器,但我们最终还是会使用太多的方法。15000行,天哪 除了您已

我目前正在维护一个应用程序,不幸的是,我们最终使用了太多的操作方法。除此之外,该项目的体系结构从一开始就不公平,每个开发人员都继续在控制器类的操作方法中添加业务逻辑,而不是将其保留在另一个业务层中。 所以现在我们的一个控制器类已经有15000行代码了,我不想通过添加另一个action方法来淹没这个类

关于如何重构它,或者我们可以使用任何部分控制器类或其他更好的方法,有什么建议吗

注:我知道我们可以通过将代码移动到另一层来使用精简控制器,但我们最终还是会使用太多的方法。

15000行,天哪

除了您已经明确说明的将代码移动到业务层,您应该做的,我也会考虑形成属于某一组函数的动作方法的逻辑组。 获得这些组后,为每个组创建单独的控制器,并适当命名。通过这种方式,您将清理控制器,并将功能部分分离到各自的逻辑分组中。

15000行,天哪

除了您已经明确说明的将代码移动到业务层,您应该做的,我也会考虑形成属于某一组函数的动作方法的逻辑组。


获得这些组后,为每个组创建单独的控制器,并适当命名。这样,你就可以清理你的控制器,你也可以把功能的部分分成他们自己的逻辑组。

你可以考虑使这个类成为一个部分,并将这个类的部分移动到不同的文件。这完全取决于您真正需要做什么-很可能您希望在一个控制器上执行100个不同的操作,这很好。但也许你会发现这些动作并不真正属于一起,你可以把原来的控制器分成几个。我看不出你为什么不能为控制器编写分部类。我从来没有试过,但毕竟,这只是一门课,和其他课一样,对吧?但这并不能真正解决您的问题,因为在intellisense、类资源管理器等中,它仍然会显示整个大列表。我想你心里知道答案。是时候开始重构成不同的、更小的、聚焦的控制器了,也许在开始之前可以在SOLID上观看Pluralsight视频。准备好它需要几周的时间……我将考虑将动作方法分离为控制器,以正确备份相关视图。此外,考虑查看存储库模式和可能的依赖注入,以便更好地构造业务逻辑。您可以考虑使该类成为部分,并将该类的部分移动到不同的文件。您可以总是有多个控制器。这完全取决于您真正需要做什么-很可能您希望在一个控制器上执行100个不同的操作,这很好。但也许你会发现这些动作并不真正属于一起,你可以把原来的控制器分成几个。我看不出你为什么不能为控制器编写分部类。我从来没有试过,但毕竟,这只是一门课,和其他课一样,对吧?但这并不能真正解决您的问题,因为在intellisense、类资源管理器等中,它仍然会显示整个大列表。我想你心里知道答案。是时候开始重构成不同的、更小的、聚焦的控制器了,也许在开始之前可以在SOLID上观看Pluralsight视频。准备好它需要几周的时间……我将考虑将动作方法分离为控制器,以正确备份相关视图。此外,考虑查看存储库模式和可能的依赖注入,以便更好地构造业务逻辑。将控制器/操作分组的边注,如果这是遗留应用程序在野外的一段时间,您需要注意正在移动的控制器/操作,并创建URL重写或更新路由表,以便旧URL不会继续失败。这很容易做到,但如果你不这么做,你可能会在短期内影响到带有书签的URL和/或搜索引擎排名的用户。谢谢@MattyMo,是的,这是一个传统的应用程序,看起来很费时,而且会增加成本和时间。我一直在寻找,希望尽快实现部分类的东西。@Maninder-如果你想更新你的应用程序,你必须从某个地方开始。为什么不开始让开发人员开始添加新功能,新的/更标准的方式业务层,等等,随着时间的推移,将麻烦的控制器重构成更有意义的逻辑组?红外
考虑到文件大小,创建一个分部类并不能为您带来太多的好处。是的@mattytomo从现在开始,我们将使用业务层。随着时间的推移,我们将修复现有的控制器。@Maninder-PS,我不是MattyTommo:太棒了,祝你好运!关于对控制器/操作进行分组的旁注,如果这是一个遗留应用程序,则需要注意正在移动的控制器/操作,并创建URL重写或更新路由表,以便旧URL不会继续失败。这很容易做到,但如果你不这么做,你可能会在短期内影响到带有书签的URL和/或搜索引擎排名的用户。谢谢@MattyMo,是的,这是一个传统的应用程序,看起来很费时,而且会增加成本和时间。我一直在寻找,希望尽快实现部分类的东西。@Maninder-如果你想更新你的应用程序,你必须从某个地方开始。为什么不开始让开发人员开始添加新功能,新的/更标准的方式业务层,等等,随着时间的推移,将麻烦的控制器重构成更有意义的逻辑组?除了减少文件大小之外,创建一个分部类并不能为您带来太多的IMHO。是的@MattyMo从现在开始,我们将使用业务层。随着时间的推移,我们将修复现有的控制器。@Maninder-PS,我不是MattyTommo:太棒了,祝你好运!