2

今天,我了解到拥有胖模型和瘦控制器被认为是一种很好的做法。到目前为止,我的想法是相反的,所以我相信我对 MVC 的理解现在都被证明是错误的。

大多数文章表明胖模型/瘦控制器方法更好,我看到的主要原因是他们声称控制器不可重用。这对于 CodeIgniter 的标准安装是正确的,但是当使用像 Wiredesignz 的 HMVC 插件这样的插件时,这不是问题。所以,简而言之,问题是:

专门用于 Code Igniter 的最佳方法是什么?

  1. 胖模型/瘦控制器
  2. 带有 HMVC 插件的胖控制器/瘦模型
  3. 没有 HMVC 插件的胖控制器/瘦模型

我不再考虑将没有 HMVC 插件的胖控制器/瘦模型作为选项,但为了完整性而将其包括在内。

请问你的想法?因此,HMVC 插件是一件邪恶的事情吗?

4

2 回答 2

6

你是对的,因为拆分成模块确实否定了使用 SC/FM 的一些原因。但这仍然是一种很好的做法,原因如下:

1)代码的可重用性正如您所说的模型应该是可重用的,您可以使可重用的代码越多越好。是的,我知道模块也可以这样做,但是模块的重点更多是关于代码的隔离和可移植性,您可能仍然希望在稍后阶段扩展这些控制器,并且在那个时候以 SC/FM 方式工作会有所帮助。

2)代码可读性当阅读您的代码时,大多数人会从您的路由配置开始,然后转到相应的控制器。一个瘦的控制器充当导演,应该简洁易读。只是调用更复杂和冗长的代码。更少的代码更容易理解。

3)当在罗马时 不容忽视,使用 MVC 框架的每个人*都以这种方式工作这一事实意味着你也应该以这种方式工作,是的,与众不同很高兴,但如果你有 5 个人在同一个团队中一起工作谁都想与众不同,这只是屁股的痛苦。

你应该重写你的代码吗?

可能不会马上,我相信你有更好的事情要做。如果您从现在开始尝试以这种心态思考,那么在某些时候您会回顾旧代码并对其进行更改(可能是当您在那里更改某些内容时),但是现在如果它没有损坏的话.. .

此外,以模块化方式工作并不像看起来那么简单,制作真正可重用的模块化代码并不容易,与为单个站点编写快速而肮脏的代码相比,实际上需要相当多的开销。最好在新代码上开始练习这一点,直到您很好地理解将现有代码转换为真正模块化的东西所需的内容 - 这将是整理您的胖控制器的时候了。

在为特定站点编写新代码时,我始终牢记我可能希望稍后在另一个站点上重用它,但如果我试图让所有东西都可以在阳光下的每个选项中重用,我将永远无法完成任何事情。到时候去调整它要好得多。

对 HMVC 的看法 老实说,我真的不知道 HMVC 位是什么,但是模块是自切片面包以来最好的东西,因为我偶然发现了 HMVC 线设计z,我现在为更多的网站做的工作要少得多 - 而且很多更重要的是,我花更少的时间做同样的事情......你想要在你的网站上的画廊。这里是画廊管理器模块,你说 Cms,是的,有一个 cms 模块,产品,是的,有一个产品模块……你明白了。我现在在一个框架上有很多变体,而不是数百个不同的站点。

概括

您目前可能正在处理简单的模块,这意味着代码的可重用性和清晰度不是这些模块中的主要问题。但是,今天就从良好的实践开始编码。当你在处理一些庞大的 CMS 或产品模块时,你会很高兴你做到了。

查看此内容以获取有关应该去哪里的指南如何在 MVC 中构建模型?

于 2013-01-07T13:52:25.417 回答
0

嗯,我不知道 HMVC,但我已经使用 codeigniter 很长时间了,我可以建议你关于胖模型和瘦控制器是一个很好的做法:

  1. 让后端和前端访问相同的模型
  2. 创建您自己的 API 以与其他应用程序交互,以便您重复使用相同的胖模型

但是,我查看了 HMVC 文档,看来这实际上取决于您将如何分配逻辑以及该模块化组件将如何共享相同的数据资源

这取决于您正在从事的项目

于 2013-01-07T11:47:36.087 回答