如何确保重构不会改变代码流程?

时间:2019-06-25 12:13:56

标签: java refactoring code-analysis flow

我正在重构一些Java代码,我的目的不是根本不更改行为/流程,而只是对其进行清理,将其划分为方法等。

最后我想做的是确保我的更改确实只是美学上的,并且行为/流程没有改变。

我知道可以通过编写全面的单元测试来“实现”,但是我想知道是否存在一些Java代码分析实用程序可以用来比较更改前后的代码流,因为从理论上讲对我来说,这是可能的。

感谢您的帮助!

1 个答案:

答案 0 :(得分:5)

  

从理论上讲,这听起来像是可能的

一点也不。您要的是halting problem的变体。您基本上是在问:我可以通过编程方式确定两个程序的行为是否相同,可以处理任意输入。

当然,一个可能在这里解决了理论上的不可能性,例如,通过定义一组“有效”输入。最后,这就是人们使用单元测试所做的事情。

但是从非常笼统的意义上讲:我可以确定两个程序是否总是做完全相同的事情吗?我很确定:您可以将该问题重写为类似于暂停问题的内容,并且可以这样说:一个可以 >没有得到解决。不是现在,也不是1000年。