1
Mohanson 2023-02-23 13:00:35 +08:00 via Android
看我头像然后猜猜答案
|
2
chaleaochexist 2023-02-23 13:01:41 +08:00
可以通过别的方式实现 IOC 不一定非得依赖注入.
|
3
Ayanokouji OP @Mohanson golang 新人,猜不到
|
4
aristotll 2023-02-23 13:04:57 +08:00
> 所在项目并没有使用
只能说明所在项目不需要这个复杂性 或者水平比较低 |
5
Ayanokouji OP @aristotll 但是还是会使用很多中间件,使用的是全局初始化的方式管理中间件的客户端
|
6
jeesk 2023-02-23 13:07:52 +08:00
看领导的
|
7
kongkongye 2023-02-23 13:09:54 +08:00
有个依赖循环的蛋疼问题
|
8
Ayanokouji OP @kongkongye 这确实是一个缺点
|
9
showshowcode 2023-02-23 13:35:21 +08:00
我没用过别的 不过我们用的 fx
|
10
luob 2023-02-23 13:45:21 +08:00
match (单元测试, 参与人数) {
| (false, _) => 全局变量 | (true, n) when n < 10 => 手动依赖注入 | (true, _) => 自动依赖注入 } |
11
coderxy 2023-02-23 14:00:54 +08:00
不要全局变量也不要依赖注入, 做好变量作用域规范就好了。 全局变量跟依赖注入都是大坑。
|
12
JamesMackerel 2023-02-23 14:07:27 +08:00
前段时间自己写的项目试了一下 wire ,感觉还可以。我自己是 Java Go 都做的,不过最近 Java 做得更多。
全局变量的这个模式,最烦人的一点就是单元测试很难搞。很难 mock 。但是依赖注入这个就是说会多一些黑盒步骤,出问题的概率会多一点(不过可能手动依赖注入出问题的概率还要大点?)。 说到这里,我又想说一下 beego 的那个 router 的设计。他的 controller 传进去只是拿来做一个识别类型的作用,最后 beego 会根据这个类型,再根据字符串里的函数名,用反射重新创建对象然后搞一遍……完全杜绝了你搞依赖注入那一套。 |
13
biubiuF 2023-02-23 14:07:34 +08:00 via Android
@Ayanokouji 他头像就是 golang 的 logo
|
14
Ayanokouji OP @biubiuF 还是不明白能猜出啥来
|
15
billlee 2023-02-23 14:22:13 +08:00 via Android
依赖注入。而且大部分情况根本不需要框架,手工 wire 就足够了。
|
16
JamesMackerel 2023-02-23 14:47:42 +08:00
@Ayanokouji 一般写 go 的人都很讨厌 Java 那一套依赖注入之类的操作。
|
17
xiaocaiji111 2023-02-23 15:09:17 +08:00
依赖注入我觉得大项目是必须的,不然全局变量满天飞,很难管理,谁知道啥时候给谁改成了啥。
目前 java 写的多,go 也接触不少年了,go 项目基本使用 wire 做静态注入,简单的就手动组合。像 dig 那种基本无感。 |
18
Nazz 2023-02-23 16:41:01 +08:00
推荐私有全局变量, 包内进行相关操作, 尽量可控
|