V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
jack4536251
V2EX  ›  问与答

写接口的时候那个 service 层可以不要吗?

  •  1
     
  •   jack4536251 · 2023-08-01 16:50:03 +08:00 · 1403 次点击
    这是一个创建于 470 天前的主题,其中的信息可能已经有所发展或是发生改变。

    为什么非要在 service 里面写业务再去 controller 里面调用,我直接写 cntroller 里面不好吗?还不用跳来跳去去看实现。

    17 条回复    2023-08-02 14:33:47 +08:00
    cheng6563
        1
    cheng6563  
       2023-08-01 16:55:18 +08:00
    因为代码复用
    renfei
        2
    renfei  
       2023-08-01 16:57:55 +08:00
    看来你还没挨过打啊,改个逻辑,一搜,复制粘贴的满世界全都是,根本不敢动
    god7d
        3
    god7d  
       2023-08-01 17:00:36 +08:00 via iPhone
    没问题,等你需要的时候再重构即可
    sujin190
        4
    sujin190  
       2023-08-01 17:15:15 +08:00
    调用链最短化和代码复用最大化考虑实际情况取最优就可以,不要太纠结,有时一开始就想各种复用就是瞎搞,然后一层调一层各种子包子项目的,其实也是乱的一塌糊涂,最后一看毛复用的情况都没出现,纯属一开始瞎想

    如果是微服务体系下,单项目应该尽量单一职责,服务规划合理的情况下,项目内本来就应该缩短调用链,再一层调一层其实很多余才是更坑死
    me1onsoda
        5
    me1onsoda  
       2023-08-01 17:16:58 +08:00
    可以,尊重他人命运
    jack4536251
        6
    jack4536251  
    OP
       2023-08-01 17:18:59 +08:00 via Android
    @cheng6563 基本没啥服用的地方吧,能复用的基本都是公共方法,我公共方法都放在 utils 里面
    jeffw
        7
    jeffw  
       2023-08-01 17:22:35 +08:00
    可以,完全没问题,我就是这样写,如果有多个地方用到同样的逻辑,就再单独抽离出来也不迟。没必要一开始就把所有逻辑放到 service 里,跳来跳去的麻烦。代码是死的,人是活的,不要太教条。
    silencil
        8
    silencil  
       2023-08-01 17:23:57 +08:00
    我也确实没遇到那么多复用的,少部分代码能进行复用,平常就是为了多一层而多
    dyxLike
        9
    dyxLike  
       2023-08-01 17:24:03 +08:00
    如果是团队代码就按规范来, 自己的项目就随意了, 以后真遇到痛点再改也不迟
    nekolr
        10
    nekolr  
       2023-08-01 17:27:40 +08:00
    如果一开始可以不是很费力的做好,为什么要留到以后回来重构呢?
    justplaymore
        11
    justplaymore  
       2023-08-01 17:44:40 +08:00
    你可以选择不分层,但你最好要知道什么时候需要分层,分层是为了解决什么问题,要有重构思路。
    nodododo
        12
    nodododo  
       2023-08-01 18:09:47 +08:00
    如果你的接口同时被 pc 安卓 ios 小程序和后台调用,肯定不能公用控制层的,必须要拆开也方便排查问题
    xinshoushanglu
        13
    xinshoushanglu  
       2023-08-01 20:26:25 +08:00
    看具体情况,如果你这个接口一开始就确定了 不会改,一次性的东西,写在哪里都行。但要是其他地方有饮用,将来还要扩展 修改 啥的,这个一次性的 controller 就必须改了
    jack4536251
        14
    jack4536251  
    OP
       2023-08-01 21:23:34 +08:00 via Android
    @xinshoushanglu 是的,先写 controller ,后面需要共用的再抽出来
    SunnyIng
        15
    SunnyIng  
       2023-08-02 09:33:08 +08:00
    直接在 controller 层写,会显得很乱,后期维护也不好维护,代码也无法复用,我看到这种代码我就骂一次。。。。
    cchrisweiii
        16
    cchrisweiii  
       2023-08-02 09:39:10 +08:00
    建议转行 C 语言,一个.C 写全部,芜湖,起飞!
    paceewang1
        17
    paceewang1  
       2023-08-02 14:33:47 +08:00
    你是没见过一个接口 1000 行的代码,当然了,这只是后面阅读还有修改的人痛苦
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5775 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 03:06 · PVG 11:06 · LAX 19:06 · JFK 22:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.