终于明白为什么初学 依赖注入 时,总是搞不清依赖的意思

2021-01-12 17:55:35 +08:00
 BeautifulSoap

以前第一次接触依赖注入时,看着各种介绍文章介绍 “依赖” 这个词的意思,总是处于那种虽然看得懂讲了什么,但是总感觉有点懵的状态,虽说之后也是理解了,但对这种曾经和别人的隔阂感总是有种奇怪的感觉

最近在整理知识写文章的时候才猛然发现到底是什么原因,原来这是个语文或者中文表达的问题

因为在中文里(这里指普通人或者第一次接触依赖注入这类概念的人), 依赖 这个词是个动词,即 A 依赖 B,或者作为名词的时候用法也是非常固定的 A 对 B 有依赖 这种句式

但是依赖注入中,依赖 这个词的意思是反过来代指对 A 有依赖的那些项目。用这种意思来做表述的话就是: A 的依赖是 B 。这种用法是普通的中文表述中是非常奇怪的也几乎见不到的,这也就导致初期的理解会变得有一定困难。更加正确的说法我觉得应该是 依赖项A 的依赖项是 B

然后我想了下,会出现这种问题的原因可能还是出在翻译上,英文叫 Dependency Injection,就这么直接粗暴翻译下就是依赖注入。可是 DI 这个词中的 Dependency 对应到中文里比较合适应该是 依赖项 这个词,也就是说是 依赖项注入。这方面可以参考下日语中对 DI 的翻译: 依存性の注入 ,有把这部分意思翻译出来。

这次的发现虽然是非常小的事情,但让我再次加深了下面两条的理解:

  1. 翻译真的很难,一个好的翻译有时候真的能降低理解概念的门槛

  2. 一个人一旦学会了某个知识,就无法想象这个知识在不会的人心里是怎样的。比如这次,懂了依赖注入概念的人可能很多人都没有意识到,在不懂这个概念的人眼里,“依赖”这个词是有一定理解障碍的。这也提醒我,在写文章或者教别人的时候,需要更多站在不懂这个知识的人的角度来思考怎么传达自己的知识

3107 次点击
所在节点    分享发现
22 条回复
BeautifulSoap
2021-01-14 10:54:47 +08:00
@no1xsyzy 至于你说的以及上面人说的 依赖注入 还是 注入依赖,我觉得可能并不是阻碍理解的关键

依赖注入这个词,语法上正确的理解方式实际上应该是动宾倒置。在中文里,动宾倒置算是知道非常广的用法,最出名的一个例子应该是初中或高中都有教过的 “古人诚不我欺” 这句
但是为什么到了依赖注入中,就偏偏让人产生理解偏差了?我觉得问题在于“依赖”这个词的词性让人没法一下联想到动宾倒置这种用法,就算联想到了,对“依赖”这个词的理解也可能会有偏差

所以我举了一个例子 依赖项注入,这里依赖项是指代明确的一个名词,可以方便人反应过来其意思。所以 DI 这个词的翻译,可能无论是依赖项注入 /注入依赖项,还是依赖注入 /注入依赖,重点应该在对 Dependency 的释意上而不是语法顺序上
no1xsyzy
2021-01-14 13:55:10 +08:00
@BeautifulSoap #20 哦我没想到第二种偏差
那样的话,实际上英文 DI 也是有这个问题的。
到底是原本其实没有任何依赖关系,通过注入形成了新的 Dependency (或者说 Optional Dependency,或者能够使得一切皆 Optional Dependency )
还是这里有个 Dependency 需要调用者提供,不提供不能工作。
(可以参考下 Python 的几个 mock 模块,能够覆盖几乎任何属性值任何 obj.meth 或者 obj.mem 的工作方式改为返回一个 dummy 对象。在 Python 里一切皆可以是 Optional Dependency )

正确的名称应当是 Deferred Dependency ?

#21 现代汉语动宾倒置几乎不存在……

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

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

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

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

© 2021 V2EX