爱意满满的作品展示区。
SpiderXiantang

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

  •  
  •   SpiderXiantang ·
    xiantang · Feb 13, 2022 · 2887 views
    This topic created in 1571 days ago, the information mentioned may be changed or developed.
    在平时写业务的时候喜欢抽接口,各种 dao interface, client interface ,但是很容易会导致接口越来越大,维护起来越来越麻烦,写了篇文章聊一下我眼中的最佳实践。

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

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

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

    func xxxFunc(in interface {
    HandleResync()
    HandleWatch()
    }) {}
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1459 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 41ms · UTC 17:06 · PVG 01:06 · LAX 10:06 · JFK 13:06
    ♥ Do have faith in what you're doing.