V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
SpiderXiantang
V2EX  ›  分享创造

Golang: 如何处理日渐膨胀的 interface

  •  
  •   SpiderXiantang ·
    xiantang · 2022-02-13 22:37:01 +08:00 · 2413 次点击
    这是一个创建于 1048 天前的主题,其中的信息可能已经有所发展或是发生改变。
    在平时写业务的时候喜欢抽接口,各种 dao interface, client interface ,但是很容易会导致接口越来越大,维护起来越来越麻烦,写了篇文章聊一下我眼中的最佳实践。

    https://vim0.com/post/how_to_fix_big_interface/
    5 条回复    2022-02-17 11:52:22 +08:00
    Aoang
        1
    Aoang  
       2022-02-13 23:37:28 +08:00 via iPhone   ❤️ 1
    最好的方式就是非必要就不要用,啥都抽象出来,interface 满天飞,即使是有 IDE ,看 interface 的实现也是很麻烦。

    自己写的东西,只要可以,都是尽可能的不用 interface 。例如配置管理,一般就会实现 env 和 args 两种,不用 interface ,约定大于配置。

    但是例如 telegram bot api 的内联键盘,有很多种,但是都属于内联键盘,用 interface 套一层可以让逻辑清晰许多
    SpiderXiantang
        2
    SpiderXiantang  
    OP
       2022-02-13 23:49:55 +08:00 via iPhone
    嗯 我这边需求就是有很多都是相同的流程 所以可以用 interface
    SpiderXiantang
        3
    SpiderXiantang  
    OP
       2022-02-13 23:51:32 +08:00 via iPhone
    接口这东西 永远都是后期抽会比较好 golang 因为是隐式接口 所以可以延后抽象
    ruanimal
        4
    ruanimal  
       2022-02-14 10:31:49 +08:00
    @SpiderXiantang 确实按需抽取比较好,不像 java 起手就是 n 个接口、Factory 、builder
    joesonw
        5
    joesonw  
       2022-02-17 11:52:22 +08:00
    而且如果入参只有一个地方用到的话, 可以

    func xxxFunc(in interface {
    HandleResync()
    HandleWatch()
    }) {}
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2783 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 06:43 · PVG 14:43 · LAX 22:43 · JFK 01:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.