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

2022-02-13 22:37:01 +08:00
 SpiderXiantang
在平时写业务的时候喜欢抽接口,各种 dao interface, client interface ,但是很容易会导致接口越来越大,维护起来越来越麻烦,写了篇文章聊一下我眼中的最佳实践。

https://vim0.com/post/how_to_fix_big_interface/
2405 次点击
所在节点    分享创造
5 条回复
Aoang
2022-02-13 23:37:28 +08:00
最好的方式就是非必要就不要用,啥都抽象出来,interface 满天飞,即使是有 IDE ,看 interface 的实现也是很麻烦。

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

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

func xxxFunc(in interface {
HandleResync()
HandleWatch()
}) {}

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/833614

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX