MVC 是否真的好 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
felixzhu
V2EX    程序员

MVC 是否真的好

  •  
  •   felixzhu 2014-12-25 10:40:12 +08:00 4527 次点击
    这是一个创建于 3944 天前的主题,其中的信息可能已经有所发展或是发生改变。

    刚发现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

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

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

    我们领导就说PHP那样一个文件一个接口,更适合快速地开发,所有有点晕
    darmody
        9
    darmody  
       2014-12-25 12:43:08 +08:00
    @felixzhu 怎么想一个文件都不对啊。。每个模块业务相对独立,新人只要针对他负责的模块学习不是挺好的。。
    jianghu52
        10
    jianghu52  
       2014-12-25 12:45:56 +08:00
    mvc在我看来最大的好处在于,分离了前端与后端。
    设计师眼里的1像素在后端的我看来,完全看不出。你要让我去调前端页面,那真是逼死我了
    yakczh
        11
    yakczh  
       2014-12-25 12:48:11 +08:00
    业务方法的类还是分模块比较好, 不过分模块以后,必须要带上命名空间,不然autoload不好写
    felixzhu
        12
    felixzhu  
    OP
       2014-12-25 13:52:49 +08:00
    @jianghu52 有点这种感觉,但是我们这边php都是前端工程师。。
    xiaogui
        13
    xiaogui  
       2014-12-25 17:36:11 +08:00
    mvc 与 分模块、分层并不冲突。
    jc4myself
        14
    jc4myself  
       2014-12-25 17:49:32 +08:00
    就这么垂直地分功能,不会有问题么?
    sampeng
        15
    sampeng  
       2014-12-26 17:00:33 +08:00
    维护困难就一条,c层不要写成一个god。。。
    一般情况都是这样导致的维护困难。。。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2731 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 07:35 PVG 15:35 LAX 00:35 JFK 03:35
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86