现在,我正在阅读Guice's official document.他们说
作为更正,只需限制两者的可见性 实现类及其构造函数。通常包 私有是两者的首选,因为这有利于:
将类内的类绑定在同一个包中
通过直接实例化方法对类进行单元测试
简单,助记 请记住,公众和@Inject就像精灵和小矮人:他们可以 共同努力,但在理想的世界里,他们会共存 独立地
通过阅读文档我知道public constructor
有多危险。
引用的句子似乎是解决方案,但我不确定其确切含义。
那么,你能检查我的想法是否正确。
首先,他们说在同一个包中的模块中绑定类。
这意味着您可以在系统中拥有一个包。使用与包相对应的Module
是好的吗?那么,基本上你有相同数量的Module
和相同数量的包?
其次,你可以看到通过直接实例化对单元进行单元测试。
这意味着我们应该使用直接实例化对单元进行单元测试,而不是Guice
' s Module
?
我认为Guice
对于测试也很有用,尤其是他们所说的单元测试。
我很困惑,有人能让我清楚吗?
答案 0 :(得分:2)
首先,他们说在一个模块中绑定同一个包中的类。这意味着您可以在系统中拥有一个包。使用与包相对应的模块是好的吗?那么,基本上你有相同数量的模块和相同数量的包?
是。无论如何你应该总是使用包。除了玩具大小的程序外,不鼓励使用默认包。
我通常希望有一个名为org.whatever.foo.some.feature
的模块类的FeatureModule
包(即包的名称+ Module
,而不是FeatureModule
)。< / p>
其次,你可以通过直接实例化看到单元测试类。这意味着我们应该使用直接实例化而不是Guice的模块来对一个类进行单元测试?我认为Guice对于测试也很有用,特别是他们说的单元测试。
如果您直接注入要测试的内容,可以更轻松地查看您正在测试的内容。
当然,你可以使用guice,但是这里发生了一定数量的魔法&#34;使用绑定,可以隐藏测试中的意外行为。
这适用于单元测试;如果您正在进行集成测试,您可能希望使用与您的生产代码相关的内容,这可能涉及到guice。