我有一个这样的项目结构:
My Project
- Other Team's Project
-Third Party DependencyMy Project要求Other Team's Project起作用,My Project和Other Team's Project都要求Third Party Dependency起作用。我们正在使用依赖关系管理系统来管理这些。
从设计的角度来看,让My Project暂时依赖Third Party Dependency更好吗?或者My Project和Other Team's Project都显式声明使用Third Party Dependency是否更好?
还有几件事:
Third Party Dependency。Other Team's Project被更新,则不能保证My Project将被测试以确保没有任何中断,因为它们是由不同的团队管理的。发布于 2016-06-03 04:20:54
想象一下,如果另一个团队在不使用第三方库的情况下对其项目进行重构以完成同样的事情,并消除了它们的依赖,会发生什么情况。或者他们转到另一个第三方图书馆去做同样的事情。你的代码还能用吗?
如果是这样的话,您的代码只依赖于另一个项目,如果不是,您的代码也依赖于第三方库。
这两个项目都需要有相同版本的
Third Party Dependency。
这是一个强有力的指示,说明您的项目也直接依赖于第三方库。
发布于 2016-06-02 22:17:56
这主要是基于意见,我认为,但我将投入我的2p无论如何。
我一直在问自己,我的代码需要多少知识才能做它应该做的事情呢?
如果我的代码只使用来自Other team's library的代码,那么我将只将Other team's library作为一个依赖项。
如果我的代码也使用了来自Third-party library的代码,那么我也将包括它。
假设我有来自My Library、Other Library和Third-party Library的以下类(我将使用Java作为示例代码)
package mylibrary;
import otherlibrary.Bar;
public class Foo {
public void doFoo() {
Bar bar = new Bar();
bar.doBar();
}
}在Other Library中
package otherlibrary;
import thirdparty.Baz;
public class Bar {
public void doBar() {
Baz baz = new Baz();
baz.doSomething();
}
}在Third-party library中
package thirdparty;
public class Baz {
public void doBaz() {
System.out.println("baz");
}
}因为我在Foo中的代码只依赖于来自otherlibrary的代码,这就是我要包含的所有内容,因为这是我所关心的。我不在乎otherlibrary.Bar#doBar怎么做它做什么,我只是想让它去做。
但是,如果我们将otherlibrary.Bar#doBar更改为接受Baz来执行某些操作,如
public void doBar(Baz baz) {
baz.doBaz();
}然后,我需要将mylibrary.Foo#doFoo更改为
public void doFoo() {
Bar bar = new Bar();
Baz baz = new Baz();
bar.doBar(baz);
}因为我现在感兴趣的是Bar#doBar将如何完成它的工作,而且我的代码需要了解Baz才能完成我想要做的事情,所以我需要明确说明我包含的库。
如果我的代码必须了解thirdparty库中的内容,那么我必须将它作为依赖项来包含。
虽然Bar的作者应该隐藏更多的细节,所以我不需要包含thirdparty库.
https://softwareengineering.stackexchange.com/questions/320128
复制相似问题