自己开发小应用究竟要不要用 MVP 或者 MVVM 的模式? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
mouyase
V2EX    Android

自己开发小应用究竟要不要用 MVP 或者 MVVM 的模式?

  •  
  •   mouyase 2019-04-24 11:53:47 +08:00 14840 次点击
    这是一个创建于 2361 天前的主题,其中的信息可能已经有所发展或是发生改变。
    首先先说明,本人水平比较差,所以并没有过使用 MVP 或者 MVVM 的经验,感觉上应该是比较先进的思想,但是感觉上手起来好像也蛮困难的……现在自己想做几个小应用,不知道要不要尝试使用这些模式,这些模式用起来会不会有什么麻烦……比如我听说 MVP 会产生大量的接口,导致维护起来也会有麻烦?
    33 条回复    2019-06-25 18:10:07 +08:00
    EKkoGG
        1
    EKkoGG  
       2019-04-24 11:55:10 +08:00
    MVC
    waising
        2
    waising  
       2019-04-24 12:00:13 +08:00 via iPhone
    mvvm
    momocraft
        3
    momocraft  
       2019-04-24 12:02:15 +08:00
    看有多小,todolist 可能不用,稍复杂的么... 反正不用一次是学不会自己判断的
    HongJay
        4
    HongJay  
       2019-04-24 12:02:34 +08:00
    你就想一辈子小厂?
    300
        5
    300  
       2019-04-24 12:02:57 +08:00 via Android
    用呗,就当是学习了
    其它模式也不见得多好。。。
    ThomasZ
        6
    ThomasZ  
       2019-04-24 12:08:48 +08:00 via Android   3
    自己做小东西了,还不赶紧把能用的新技术都用上。。。 不要指望工作中的提升
    kitalphaj
        7
    kitalphaj  
       2019-04-24 12:20:44 +08:00   1
    个人项目或者 5 人以内项目建议 MVVM+Rx,大项目可以考虑加入 P。

    MVVM 本身其实不复杂,加上 Rx 会增加难度特别是 Android,建议参考 Github 优秀开源软件比如 Kickstarter 的安卓版
    gz911122
        8
    gz911122  
       2019-04-24 13:06:48 +08:00
    mvvm
    开发效率高
    databinding 就是快
    SeanChense
        9
    SeanChense  
       2019-04-24 13:09:52 +08:00
    我的公司算个大厂吧。但我觉得个人项目就别搞这些了,MVC 不好吗?
    zhihaofans
        10
    zhihaofans  
       2019-04-24 13:12:13 +08:00 via Android
    自己怎么开心怎么来
    mouyase
        11
    mouyase  
    OP
       2019-04-24 14:28:56 +08:00
    @waising
    @winterbells
    @ThomasZ
    @kitalphaj
    @gz911122 感谢各位回复,决定试着用一用 MVVM 模式来做东西了。希望可以了解一下新的思想。
    oakMac
        12
    oakMac  
       2019-04-24 16:50:22 +08:00
    MVP 维护起来像吃了翔一样难受
    xuanbg
        13
    xuanbg  
       2019-04-24 16:56:06 +08:00
    我连古老的 WinForm 都要写成 MVC 模式,你说你的小项目要不要?

    如果你用了 MVC 或 MVVM 什么的,小项目可以快速增殖变身大项目,而且写起来和小项目一样清爽。如果随便乱搞,这个小项目以后不说难以扩展,就是维护,也会非常麻烦。
    dabaibai
        14
    dabaibai  
       2019-04-24 19:54:22 +08:00
    用,将来开发第二第三个第四个 速度会飞起
    Iamnotfish
        15
    Iamnotfish  
       2019-04-24 22:41:00 +08:00
    感觉楼上全是精英嗷,我觉得楼主的问题可以细化一下。你开发小程序的目的是为了学习还是为了一次开发呢?如果是为了学习的话可以了解一下各种模式之类的。但是如果只是为了一次性开发使用面对过程式开发是很好的选择,使用 MVVM,MVP,MVC 都是需要有一定基础的,因为如果在你 0 基础没人带着你的话你很容易打破模式的限制,写出来一个不三不四的程序。希望楼主考虑周全
    Iamnotfish
        16
    Iamnotfish  
       2019-04-24 22:43:29 +08:00
    而且我觉得楼主所谓的‘小程序’和各位理解的‘小程序’可能存在一定偏差。大家理解的小程序估计是微信小程序。楼主的意思可能是一个 CONSOLE 加减程序。。。
    HuHui
        17
    HuHui  
       2019-04-24 22:44:48 +08:00 via Android
    不要想太多,先做了再说
    xuyuheng0905
        18
    xuyuheng0905  
       2019-04-24 22:49:01 +08:00
    MVC 合适就用 MVC,架构是逐步演化的,不要想一步到位。遇到问题才去解决。
    fuxiaohei
        19
    fuxiaohei  
       2019-04-24 23:04:27 +08:00   1
    如果觉得你做的东西很有意思,用最熟悉的技术
    如果觉得你做的东西没啥意思,用最新颖的技术
    2kCS5c0b0ITXE5k2
        20
    2kCS5c0b0ITXE5k2  
       2019-04-25 00:56:50 +08:00
    学啊. 反正自己的小项目 挺好的 mvvm
    hotsymbol
        21
    hotsymbol  
       2019-04-25 01:04:50 +08:00
    当然是微服务框架
    Airy
        22
    Airy  
       2019-04-25 01:49:45 +08:00 via Android
    viewmodel+databinding,忘了 mvc 吧,mvvm 赛高
        23
    BCy66drFCvk1Ou87  
       2019-04-25 09:17:15 +08:00
    头像很可爱
    qianji201712
        24
    qianji201712  
       2019-04-25 09:27:43 +08:00
    MVP 的确会产生很多的接口,如果想让代码简洁,那么设计 MVP 接口至关重要。
    如果你自己的小项目,而且对 MVP 不是很熟的话,建议直接 MVC 吧,我觉得写代码,不能纠结于框架,适合的才是最好的,就你目前的情况,应该是怎么舒服怎么来。
    MVP 没产生之前,不照样有很多优秀的 MVC 代码,hhhh
    jiqingke
        25
    jiqingke  
       2019-04-25 09:37:00 +08:00
    mvvm+jetpack,最好用 kotlin 写,我保证会给你不一样的感觉
    thinkloki
        26
    thinkloki  
       2019-04-25 10:18:21 +08:00
    mvc 一把嗦,问就是开发熟悉,懒得学。
    ksssdh123
        27
    ksssdh123  
       2019-04-25 10:38:23 +08:00
    自己开发,想怎么来就怎么来,关键是自己代码能看明白

    MVP,MVVM 分层 无非就是让数据 层次更清晰,别人去看你代码的时候 非常清楚数据的流向
    mouyase
        28
    mouyase  
    OP
       2019-04-26 12:18:02 +08:00 via Android
    @Iamnotfish XD 其实我上面写的是小应用,我是做安卓的
    chaorenry
        29
    chaorenry  
       2019-04-26 16:24:10 +08:00
    如果你以前做过 java 那就用 mvp,特点是理解快速和方便入手,如果你没用过,那就 mvvm,特点是数据订阅和刷新都帮你处理了,只要你不是写 demo 测试,就不要直接在 activity 里动手
    huruwo
        30
    huruwo  
       2019-04-28 10:43:45 +08:00
    建议直接上 jetpack 一步到位
    Goolge
        31
    Goolge  
       2019-04-29 10:40:43 +08:00
    MVP 感觉是忽悠人的 并不是那么美好。同意楼上你可以试试 Jetpack。我习惯了 MVC。
    mouyase
        32
    mouyase  
    OP
       2019-04-30 10:46:21 +08:00
    @huruwo
    @Goolge
    正在尝试使用 Jetpack,感谢大家回复
    shineyang
        33
    shineyang  
       2019-06-25 18:10:07 +08:00
    @chaorenry 正解~
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5341 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 43ms UTC 06:47 PVG 14:47 LAX 23:47 JFK 02:47
    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