【问题标题】:Mark as deprecated third party class标记为已弃用的第三方类
【发布时间】:2017-11-16 19:16:31
【问题描述】:

我有一些第三方库 FooFooBar。我认为类 FooBar 设计得很糟糕。我想编写自己的 MyBar 作为适配器模式。我可以在不修改代码的情况下将原来的FooBar标记为@Deprecated吗?

【问题讨论】:

    标签: java refactoring deprecated


    【解决方案1】:

    @deprecated 应添加到源中以将类/方法标记为已弃用。所以你不能弃用别人的代码。

    但是,如果您有一个更好的替代方案,您希望在项目中将其用作标准,那么您可以通过其他方式强制执行此标准,例如 checkstyle 中的规则。

    【讨论】:

      【解决方案2】:

      如果不编译,您不能将其标记为已弃用,因此需要源代码

      【讨论】:

      • 你可能可以做一些字节码操作来添加deprecation attribute。但我认为这不值得。
      • 谢谢,其实我有来源。但我不会对它做任何修改。首先,其他团队成员很容易忘记使用修改后的 lib。其次,它会在构建和分发过程中产生新的问题,我不确定我是否可以通过许可证进行代码修改。
      • @Stas - 弃用标志在编译的类中。 1)如果你不能确保你的团队成员使用正确版本的编译类,你基本上就完蛋了。 2) 如果您有源代码但不允许重新编译...或调整二进制文件...您有一个非常奇怪的许可证!!
      • @Stephen, 1) 很尴尬(2) 我很可能可以做这样的修改。但我真的不知道。可能我应该咨询律师。
      • @Stas - 我不会担心律师,除非法律术语难以理解......或者除非你能看到你正在做的事情可能可能 损害软件供应商的利益;即他们可能会关心。 (但是,嘿,IANAL :-)
      【解决方案3】:

      作为替代方案,使用 IDE 的“查找引用”功能查找代码使用违规类的所有位置。或者使用“grep”。

      【讨论】:

      • 好的,谢谢。但真正的任务是阻止FooBar未来中的使用。
      【解决方案4】:

      当然,可以更改类文件,将不推荐使用的注释添加到类中。 (但我并不精通执行此操作所需的工具。)

      【讨论】:

      • 是的。我可以。但是项目中可以有新成员如何决定使用原始库。也许,一些 checkstyle 工具将是最好的解决方案。
      猜你喜欢
      • 2014-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-22
      • 1970-01-01
      • 1970-01-01
      • 2015-11-25
      • 1970-01-01
      相关资源
      最近更新 更多