你是对的,因为拆分成模块确实否定了使用 SC/FM 的一些原因。但这仍然是一种很好的做法,原因如下:
1)代码的可重用性正如您所说的模型应该是可重用的,您可以使可重用的代码越多越好。是的,我知道模块也可以这样做,但是模块的重点更多是关于代码的隔离和可移植性,您可能仍然希望在稍后阶段扩展这些控制器,并且在那个时候以 SC/FM 方式工作会有所帮助。
2)代码可读性当阅读您的代码时,大多数人会从您的路由配置开始,然后转到相应的控制器。一个瘦的控制器充当导演,应该简洁易读。只是调用更复杂和冗长的代码。更少的代码更容易理解。
3)当在罗马时 不容忽视,使用 MVC 框架的每个人*都以这种方式工作这一事实意味着你也应该以这种方式工作,是的,与众不同很高兴,但如果你有 5 个人在同一个团队中一起工作谁都想与众不同,这只是屁股的痛苦。
你应该重写你的代码吗?
可能不会马上,我相信你有更好的事情要做。如果您从现在开始尝试以这种心态思考,那么在某些时候您会回顾旧代码并对其进行更改(可能是当您在那里更改某些内容时),但是现在如果它没有损坏的话.. .
此外,以模块化方式工作并不像看起来那么简单,制作真正可重用的模块化代码并不容易,与为单个站点编写快速而肮脏的代码相比,实际上需要相当多的开销。最好在新代码上开始练习这一点,直到您很好地理解将现有代码转换为真正模块化的东西所需的内容 - 这将是整理您的胖控制器的时候了。
在为特定站点编写新代码时,我始终牢记我可能希望稍后在另一个站点上重用它,但如果我试图让所有东西都可以在阳光下的每个选项中重用,我将永远无法完成任何事情。到时候去调整它要好得多。
对 HMVC
的看法 老实说,我真的不知道 HMVC 位是什么,但是模块是自切片面包以来最好的东西,因为我偶然发现了 HMVC 线设计z,我现在为更多的网站做的工作要少得多 - 而且很多更重要的是,我花更少的时间做同样的事情......你想要在你的网站上的画廊。这里是画廊管理器模块,你说 Cms,是的,有一个 cms 模块,产品,是的,有一个产品模块……你明白了。我现在在一个框架上有很多变体,而不是数百个不同的站点。
概括
您目前可能正在处理简单的模块,这意味着代码的可重用性和清晰度不是这些模块中的主要问题。但是,今天就从良好的实践开始编码。当你在处理一些庞大的 CMS 或产品模块时,你会很高兴你做到了。
查看此内容以获取有关应该去哪里的指南如何在 MVC 中构建模型?