大家有没有见过没有使用依赖注入的复杂 Go 开源项目

37 天前
 matrix1010

最近打算把公司的项目重构为使用依赖注入初始化所有服务(现在是每次需要某个依赖就内部 New 一个), 想找一些开源项目作为例子。但是简单找了找都是自动/手动进行依赖注入的,大家有没有见过 没有 使用依赖注入的:

5880 次点击
所在节点    Go 编程语言
95 条回复
changz
36 天前
@james122333 这个跟 init 有什么本质区别
wupher
36 天前
面向绩效编程哈
mrjnamei
36 天前
@matrix1010 AI 肯定没问题,我不太习惯用 AI ,会和我的 IDE 使用习惯冲突,代码在迭代和维护的过程需要不断的新增依赖才是最烦的,非常容易漏掉。
me1onsoda
36 天前
你到底想不想要使用依赖注入?
matrix1010
36 天前
@mrjnamei 这个恰好也是我正在试图避免的问题,初始化 service 肯定是有个 NewXxxService 或者 ProvideXxxService 之类的方法,如果单元测试初始化 service 时也使用这些方法就可以覆盖到。但如果 test 里手动构建 struct: testService := &UserServiceImpl{db: db, ...} 这样就检测不到了
qloog
36 天前
uncat
36 天前
当然是 miniflux/v2 啦。
james122333
36 天前
@changz

可以多个 init 函数可以四处飘 这个一个对象初始化自己的 意义不同 当然可以滥用 但问题清晰多了 可以避免翔
firstep
34 天前
@zjsxwc #36 ,实在看不惯 wire/fx 等用法。我也喜欢使用 init 特性来做初始化。
当然在测试时 init 顺序确实会有包间依赖顺序问题。所以造了个 initer 能够指定顺序,当然只是实验性的满足当前的项目场景。
rainbowStay
30 天前
@bthulu java 转 go 的新手提问下,为啥 go 不推崇依赖注入呀
rainbowStay
30 天前
@matrix1010 #19 意思是不是现用现 New 的都算依赖注入? func NewService(repo Repository) *Service {
return &Service{repo: repo}
}
rainbowStay
30 天前
@rainbowStay #91 抱歉,莫名奇妙发送出去了,想请问一下像上面这个写法也算依赖注入吗?
matrix1010
30 天前
@rainbowStay repo 不是你在 NewService 函数内部创建的,而是传入作为参数。完全符合依赖注入的定义
Kauruus
29 天前
@rainbowStay 不存在 “go 不推崇依赖注入” 的。
qloog
24 天前
使用 wire 的一个完整性 project: https://github.com/qloog/go-wire-example 示例说清楚了 wire 的大概用法

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

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

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

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

© 2021 V2EX