Как я могу убедиться, что мой рефакторинг не меняет поток кода? - PullRequest
0 голосов
/ 25 июня 2019

Я выполняю рефакторинг некоторого кода Java, я собираюсь вообще не изменять поведение / поток, а просто очистить его, разделить на методы и т. Д.

Что я хотел бы сделать в концечтобы убедиться, что мои изменения действительно только эстетические и что никакое поведение / поток не изменяется.

Я понимаю, что это может быть "достигнуто" путем написания комплексных модульных тестов, но мне интересно, есть ли какой-нибудь код JavaУтилита анализа, которую я могу использовать для сравнения потока кода до моих изменений и после него, поскольку теоретически мне кажется, что это возможно.

Любая помощь приветствуется!

1 Ответ

5 голосов
/ 25 июня 2019

так как теоретически мне кажется, что это возможно

Совсем нет. То, что вы просите, - это вариант проблемы остановки . Вы в основном спрашиваете: могу ли я программно решить, будут ли две программы вести себя одинаково, обрабатывая любой произвольный ввод.

Конечно, one может обойти здесь теоретические невозможности, например, путем определения набора «допустимых» входных данных. В конце концов, это то, что люди делают, используя модульные тесты .

Но в этом очень общем смысле: могу ли я решить, всегда ли две программы выполняют одну и ту же вещь, я почти уверен: вы можете переписать эту проблему во что-то, что напоминает проблему остановки, и, как уже было сказано: что можно не быть решенным. Не сейчас и не через 1000 лет.

...