做个调查:你们的 Go 项目中会用到依赖注入吗?比如用到如 wire、dig 之类的库?

177 天前
 inSpring
7991 次点击
所在节点    Go 编程语言
81 条回复
Visionhope
176 天前
之前用的 wire ,新项目试了下 fx ,感觉要流畅一些。至于使用 DI 框架的好处,那就是定义好初始化函数,剩下的交给框架就行了。个人还是蛮喜欢的。
testliyu
176 天前
我们项目里没做
qloog
176 天前
用到了,使用 google 的 wire: https://github.com/go-eagle/eagle-layout
MIUIOS
176 天前
依赖注入啥时候和 java 绑定并成了一种邪恶的东西呢。。。他明明是一种思想
zthxxx
176 天前
目前 uber/fx
james122333
176 天前
这之前已经有讨论过了 我倾向不用
package 下直接初始化 struct 就可以了
一楼讲的其实就是把 struct 当命名空间用 很 js 的方式
go 已经有命名空间了 所以不用这种方式实现一样结果更单纯
spring 下的与一楼讲的相似 只不过是换成阵列 徒增性能损耗
这种方式因语言本身 import 功能就已经解决依赖问题
只要没 import 循环问题即可 其它语言的都可能会有依赖循环问题 这是种对语言特性深度了解并使用本身具备的功能减少过多嵌套的方式个人认为最佳

至于测试... 可以用 go test
本身就已经有的功能
james122333
176 天前
虽然我本身不怎么想写测试
james122333
176 天前
还有一点 直接用 import 在编译或开发时就会检查依赖了 错了代表设计不合理
wangritian
176 天前
学习了本贴和一些链接的内容,然后决定继续手搓
Trim21
175 天前
就算用 di 也不该用 dig ,应该用 fx (
lujiaxing
175 天前
看到这标题我真是一口可乐喷出来了.
go 的出现本来就是为了规避这些复杂的要死的设计模式.
大道至简.
结果你把依赖注入都搬出来了.
那你为什么不直接用 ASP.NET Core 算了.
zjsxwc
175 天前
wire 、dig 之流太恶心,不如直接用 init 来依赖注入,当然要注意 init 顺序
wysnxzm
175 天前
@totoro52 #44 因为某些人给自己打上了思想钢印
sophos
175 天前
哈哈哈,月经贴鉴定完毕,总结一下 :-)
- 个人的、不写单测的项目不需要用依赖注入,代码抽象的复杂度会上升
- 多人参与的、迭代频繁的项目,用依赖注入会让大家都舒服,用类似的模式写代码和测试

刚好回头刷了下我早前开源的 Go 依赖注入框架,发现多了几个 star……

https://github.com/go-kod
1283095131
175 天前
fx 挺好用的
mengyx
175 天前
以前用过 wire ,现在用 fx 比较多;不用依赖注入的话,业务的单元测试会很难写
lysShub
175 天前
@matrix1010 1.设计的时候解耦一下、测试专门搞个 mock 实现; 2. go 有几个 monkey 库可以用
kkhaike
175 天前
说 fx 好用的我都点了赞
NoobPhper
175 天前
把一件复杂的事情做简单 是件很难得事情看来
EscYezi
175 天前
以前试过依赖注入框架,后来看 flutter 的时候发现了 riverpod 用的 provider 方式,自己写的小项目也改成类似的方式感觉比较顺手,还可以借助一点 go 本身的循环依赖检查
https://gist.github.com/yeziyezi/97d4e75dc59e5d9d40f3d88889552cb5

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

https://ex.noerr.eu.org/t/1131027

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

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

© 2021 V2EX