![]() |
1
1
您无法阻止外部依赖引入破坏性更改。但是,您可以编写代码,以使更新外部依赖项所需的工作量最小。 我观察到,在实践中,对依赖关系并没有给予太多关注,就好像它们是免费的一样。最初它们就像免费的一样,但一旦你开始堆叠依赖项,并且存在冲突的可传递依赖项,或者你升级到一个新版本,并进行了破坏性的更改,就会产生维护成本。我看到过这样的项目,依赖网络是如此复杂,如果不是为了管理层不理解技术债务的概念,他们应该从头开始完全重写,生活在一种错觉中,即维护现有(坏)版本的软件比编写新版本要便宜。 您必须防范外部依赖的唯一选择是以某种方式封装它们。这可能涉及一些锅炉板代码,但如果这个锅炉板代码是最小的,那么可能很值得付出努力。
您无法控制的外部代码以红色显示。如果您不考虑构建代码,您的代码(橙色)将直接依赖于外部代码,并面临外部更改的风险。您可以尝试编写对外部代码没有依赖性的代码(绿色)。实现这一点的方法是在自己的界面中定义所需的外部功能。然后,您有一些实现这些接口并具有外部依赖关系的代码(橙色)。您可以通过依赖项注入框架注入具有外部依赖项的代码。
|
![]() |
2
1
但是我不明白你为什么想要这样,一个主要的版本更改(例如4.xx到5.xx)意味着一些东西将要崩溃,你将不得不对你的代码进行更改。 |
![]() |
Rorschach · 从接口的导入类中获取值 7 年前 |
![]() |
incredibleholg · 存储库save()不工作 9 年前 |
![]() |
Tyler · 为什么我修改的neo4j节点属性没有持久化到数据库中? 9 年前 |