这取决于。
a)当然,但是由于整个项目变成了一个.dll,如果你有7个控制器,每个控制器有300行代码,而一个控制器有2100行,那么从性能的角度来看真的很重要吗? (如果没有关注点分离,显然可读性和紧耦合是问题)
b)只要考虑到关注点的分离,一个控制器中的代码行数是不是问题?
c)一个控制器中有多少行代码可能是需要重构的标志? (500,1000,5000,10000)?
答案 0 :(得分:8)
任何傻瓜都可以编写计算机可以理解的代码。好 程序员编写人类可以理解的代码。 --Martin Fowler [source]
我记得在经典的asp中看到一个单页的应用程序。它根据所引入的参数进行了不同的渲染。从理论上讲,你可以用ASP.NET MVC做同样的事情,制作一个拥有大量视图的单个控制器(或者更糟糕的是基于输入到控制器而改变的单个视图)。
当然,超级控制器将其工作分为动作。但无论如何,你仍然在做一些大事。
第一个SOLID Principle是单一责任。您的模块应该只有一个原因需要更改。一个大型控制器告诉我两件事:
这两个都是SRP违规,因为执行太多操作的控制器有多个原因需要更改。当逻辑发生变化或与之交互的对象发生变化时,过多的动作必须改变。
对我来说,Controller Action应该只调用服务上的函数(接口,Web服务,等等)并返回该调用的结果。我的大多数控制器动作都是两行代码。我的大多数控制器都非常关注他们的工作。
根据经验,当我必须为一个班级滚动两页以上(大约200行,具体取决于你的字体大小和/或分辨率)时,我会感到不舒服。比实际长度更重要的是我的控制器有多少责任。最大限度地减少责任,并自动减小文件大小。