MVC 是否真的好

2014-12-25 10:40:12 +08:00
 felixzhu

刚发现v2ex可以在首页发主题了,发个帖大家讨论讨论

首先MVC框架到后来都会出现有很大View文件或者Service文件之类,以及很长的url配置

然后就是纯php式的开发,一个接口一个文件,啥都不管,新人接手不用看太多之前的代码,不用管代码结构,就一直加新的文件来对应到新的接口就可以了,也不用配置url。反而新加功能效率更高,但是后期维护会很头疼。

不知道大家怎么看,或者说怎么避免MVC中文件过大的问题。(这应该是通用话题,因为做iOS开发的时候也是各种方法来避免Controller过冗余的问题)

很大的View文件(只是举个例子,实际业务很容易到千行):
https://github.com/getsentry/sentry/blob/d50386e7aa3c4deae63906e85da01a98364c3ef4/src/sentry/web/frontend/groups.py

冗长的url配置:
https://github.com/getsentry/sentry/blob/d50386e7aa3c4deae63906e85da01a98364c3ef4/src/sentry/web/urls.py

4204 次点击
所在节点    程序员
15 条回复
datou552211
2014-12-25 11:05:12 +08:00
为了实现底层数据的持久化和频繁变更的业务逻辑,mvc是必须的。如果业务变得很大,可以把功能模块化,多mvc集合。开发上尽可能实现单一职责原则。
zhyu
2014-12-25 11:06:14 +08:00
很大的 view 文件,冗长的 url 配置,为啥要写到一个文件里。。
kisshere
2014-12-25 11:15:43 +08:00
我觉得大项目MVC 小项目VC
regmach
2014-12-25 11:30:10 +08:00
我倒是觉得m和c之间少了点什么..
jinzhe
2014-12-25 11:34:08 +08:00
MVC不是必须的,只是一种设计思想而已。没必要一定要这种方式。
williamx
2014-12-25 12:20:59 +08:00
这么说吧,就看你想把项目做到什么程度。

一个人的项目,只要你能把控,有一个统一的设计思想,不会过几天自己都看不懂,那么就无所谓了。多个人合作,周期又长,那么尽量用大家都能理解的东西来做。
darmody
2014-12-25 12:22:38 +08:00
你们的业务不分模块的吗?
felixzhu
2014-12-25 12:34:09 +08:00
@darmody 肯定是分了,但是来新人的时候就需要重新学习模块划分,看之前的接口设计,还有各层的接口。就算分了不断的人来维护,最后也会变得很大

我们领导就说PHP那样一个文件一个接口,更适合快速地开发,所有有点晕
darmody
2014-12-25 12:43:08 +08:00
@felixzhu 怎么想一个文件都不对啊。。每个模块业务相对独立,新人只要针对他负责的模块学习不是挺好的。。
jianghu52
2014-12-25 12:45:56 +08:00
mvc在我看来最大的好处在于,分离了前端与后端。
设计师眼里的1像素在后端的我看来,完全看不出。你要让我去调前端页面,那真是逼死我了
yakczh
2014-12-25 12:48:11 +08:00
业务方法的类还是分模块比较好, 不过分模块以后,必须要带上命名空间,不然autoload不好写
felixzhu
2014-12-25 13:52:49 +08:00
@jianghu52 有点这种感觉,但是我们这边php都是前端工程师。。
xiaogui
2014-12-25 17:36:11 +08:00
mvc 与 分模块、分层并不冲突。
jc4myself
2014-12-25 17:49:32 +08:00
就这么垂直地分功能,不会有问题么?
sampeng
2014-12-26 17:00:33 +08:00
维护困难就一条,c层不要写成一个god。。。
一般情况都是这样导致的维护困难。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/156515

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX