Java:不推荐使用的数据挖掘工具

Java:不推荐使用的数据挖掘工具,java,refactoring,deprecated,Java,Refactoring,Deprecated,一旦某个方法被标记为已弃用,是否有任何工具可以用未弃用的变通方法替换这些方法?如果您希望自动执行此操作-否 这个工具叫做程序员 原因是这些工具需要深刻理解弃用、取消弃用、您的程序和目标编程语言 例如,java.util.Date.setMonth被弃用,取而代之的是Calendar.set(Calendar.MONTH,int-MONTH) 这是一个非常重要的更改,因为它需要替换对象实例化、方法调用,并考虑同步。事实上,自动操作简直是噩梦。我现在看不出这是怎么回事。通常,至少需要考虑一下如何更

一旦某个方法被标记为已弃用,是否有任何工具可以用未弃用的变通方法替换这些方法?

如果您希望自动执行此操作-否

这个工具叫做程序员


原因是这些工具需要深刻理解弃用、取消弃用、您的程序和目标编程语言

例如,
java.util.Date.setMonth
被弃用,取而代之的是
Calendar.set(Calendar.MONTH,int-MONTH)


这是一个非常重要的更改,因为它需要替换对象实例化、方法调用,并考虑同步。事实上,自动操作简直是噩梦。

我现在看不出这是怎么回事。通常,至少需要考虑一下如何更改客户机代码。理想情况下,不推荐使用的方法将包含一条注释:“使用方法X,将null作为最终参数传递”或类似的内容,但只有在最简单的情况下,这才能完全自动化。通常会出现这样的情况:“如果需要处理空条目,请使用X。否则,请使用Y。”

(此外,即使在最简单的情况下,也没有以机器可读的格式表示转换的当前方式——据我所知,基本上还没有定义适当的协议。)


这是一个好主意,但我怀疑以一种有用的方式实现它会带来比它所消除的更大的复杂性。此外,我对一个完全自动为我做这件事的工具非常谨慎——无论如何,我可能想预览每一个更改。在这一点上,通常不会比手动开始节省太多时间。

自动化工具只能合理地处理有新的首选方法或类用于完成完全相同的任务的情况。在任何情况下,如果一个方法因为设计缺陷(想想Java中处理日期的任何东西)或者因为现在支持“更好”的方法(想想AWT到Swing或SWT)而被弃用,那么要实现自动化需要花费大量的精力


简言之,没有这样的工具。我怀疑将来还会有类似的工具。

通常,您应该使用诸如regexps、ANTLR或JavaCC之类的工具来实现自己的工具


此外,一些IDE提供了相对较高级别的工具来实现这一点。在IntelliJ IDEA中,这些是“结构化搜索和替换”和“迁移”重构。

这一定是我见过的最复杂的标题:p。。。我尽量简洁。虽然回答很有趣,但它并没有认真对待这个问题-1@krosenvold当前位置我几乎总是半开玩笑,这是我陈述论点的方式。我没有拿这个问题开玩笑,我坚持我的观点。感谢+1有趣的/-2不严肃的mod:-),但特别是留下了一条评论。我同意这个回答=)如果类/方法的原始实现被认为是如此糟糕,以至于在不破坏遗留代码的情况下无法修复,那么更改必须是非平凡的。换句话说,如果你不能搜索/替换你的方法来解决问题,你可能不得不用手去做。