公司内部有不少,但是没有外网链接。体感 用 DI : 不用 DI = 7:3 的样子。
如果业务逻辑非常简单,依赖非常清晰,没有什么分岔的话,其实用不用 dig 写起来差不多的。个人经验来说依赖注入在 Go 大部分情况下都是伪需求或者说提升编码效率的小工具,开始的时候没用的话不必要强上。要跨组件公用的话,直接暴露一个变量或者一个 getter ,内部用 once 啥的初始化一下就行。
单元测试要补强的话,在写的时候就一定要习惯用 interface 来声明组件,方便之后 mock 。(当然另一个方面来说,Interface 写多了,用 DI 自动串起来还是挺方便的。)说实话每次写单元测试都感觉挺不 Go 的,还是 Java 那套思路。但是回头想想,非常多单元测试实际上没有任何作用,只是单纯提升 coverage 而已。现在我比较喜欢把核心逻辑去掉各种 side effect 抽到某个函数里,然后对函数做比较多的 UT ,其他 side effect 直接交给后面的 e2e 什么的来验证。还是要具体情况具体分析,避免无效工作。