【问题标题】:In Eclipse, how can I move project files without dependencies on a library to a more abstract project?在 Eclipse 中,如何将不依赖于库的项目文件移动到更抽象的项目中?
【发布时间】:2012-03-27 15:54:19
【问题描述】:

我有两个 Eclipse 项目:一个依赖于某个库 (android.jar),另一个更抽象且不包含该依赖项。

我正在将包上无依赖关系的所有类(在我的情况下为android.*)迁移到更抽象的项目。是否有 Eclipse 功能可以帮助自动化移动?

理想情况下,应该有一个功能可以直接让您自动搜索和移动可以重新定位到新项目的文件。它会找到以下文件:

  • 独立于指定包(带通配符)
  • 独立于同一个项目中依赖同一个包的其他文件(换句话说,对包没有间接依赖)

【问题讨论】:

  • 这是一种可行的方法吗?如果A不依赖android,而是依赖于依赖android的B怎么办?
  • 您的编辑确实表达了与我的评论相同的担忧。我不认为这是一项可以(或应该)自动化的任务。您应该根据每个类、类集或包提供的功能进行重构,并且您可能必须重新设计代码以使依赖于 android 的类不依赖,但仍可在 android 上下文中使用(使用接口、抽象、策略和其他 OO 模式)。
  • @JBNizet 我很困惑为什么你不想自动化任务?将这些独立文件保存在独立于 android.jar 的单独项目中将有助于明确摆脱对 Android 的依赖。它还将确保依赖项不会意外泄漏回类中。您关于创建新的独立类的想法是完全有效和好的,但我看不出它们与自动重构有何关系——或不鼓励自动重构。这种重构将有助于自动重新定位您建议的重新设计已经执行的文件。
  • 我并不是说不应该进行重构。我的意思是它可能应该手动完成,并在这样做的同时考虑设计。假设 100 个类都依赖于类 A,它对 android 的依赖很小。这使得这 100 个班级没有资格被移动。也许这个类 A 应该被手动 refectored 以消除对 android 的直接依赖(例如,使用对 android-independent 接口的依赖而不是具体的 android 实现)。所有这 100 个班级都将有资格被移动。这样做需要手动设计。
  • 不过,我完全同意您的说法,但是我不明白它如何使重构变得不那么有用。如果目标是消除尽可能多的依赖关系,一旦已经独立的类被识别并重新定位,开发人员可以更清楚地看到需要手动工作以解耦的类,如您所描述的。然后,一旦完成这项工作,移动就可以再次自动化,依此类推。

标签: eclipse refactoring dependencies dependency-management dependency-analysis


【解决方案1】:

我提交了一个Eclipse enhancement request 来支持这样的重构。与此同时,我发现了一些很有前途的工具来帮助解耦和依赖分析。

相关问题:1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-10
    • 1970-01-01
    • 1970-01-01
    • 2014-10-19
    • 2015-03-10
    • 2015-08-11
    • 2016-06-30
    • 2012-12-17
    相关资源
    最近更新 更多