2016-09-06 3 views
0

У меня есть код PHP, который не имеет хорошего тестового покрытия и не может легко тестироваться в его текущем состоянии. Если я использую команды из меню refactor PhpStorm и не делаю никаких других изменений, насколько я уверен, что это не изменит поведение моего приложения?Насколько безопасно использовать команды рефакторинга PhpStorm

Насколько безопасны другие инструменты автоматического рефакторинга?

Я понимаю, что эти инструменты будут применяться статический анализ и может вызвать только изменения в поведении, если приложение делает что-то очень странное, как в зависимости от выхода debug_backtrace()

+0

Имейте в виду, что рефакторинг только думает о коде, который у вас есть прямо сейчас. Если вы делаете код с большим вниманием, и вы сделали перерыв для рефакторинга, он, вероятно, внесет изменения в функцию, которая еще не завершена, и вам придется вернуться, чтобы добавить свои изменения. – Phiter

+0

1) Когда вы реорганизуете что-то, у вас будут некоторые возможности области (просто код, а также включить использование комментируемого кода .. или даже строки, которые имеют имя этого класса/метода/переменной в нем и т. Д.). 2) Вы всегда можете просмотреть свои возможные изменения (точнее - все места вашего текущего кода, в которых IDE будет делать такой рефакторинг), а также исключить из него определенные строки до его фактического выполнения. 3) Если вы сохраняете до и после выполнения рефакторинга (так что буфер редактора не имеет ожидающие изменения, которые необходимо сохранить), вы можете вернуть все измененные файлы из функции Local History – LazyOne

+0

* «Я понимаю, что эти инструменты будут применять статический анализ» * - Это правильно. – LazyOne

ответ

-1

The (чрезмерно) простой ответ не является, это не лучше или хуже, чем вручную рефакторинг.

Если у вас хорошие тесты, тогда это безопасно. Если вы этого не сделаете, это не так.

Я бы сказал, что не нужно рефакторинг без проведения модульных тестов для каждой реорганизуемой функции. Рефакторинг не должен прерывать модульные тесты, если это происходит, то вы не реорганизовали его, вы его изменили.

Я был укушен инструментами рефакторинга PhpStorms в странных целях в прошлом, даже в результате чего был нарушен синтаксис. Но это было давно, инструменты перешли, и всегда легко вернуться на шаг, если вы методично совершаете изменения в своем SCM.

+0

Часто невозможно написать тесты, не выполняя сначала рефакторинг. Некоторый код даже не в функциях, он просто выполняется во время включения файла PHP. – bdsl

+0

Работа с устаревшим кодом всегда сложна, но то, что я сказал, все еще верно. Рефакторинг автоматически или вручную будет рискован, если вы не сможете проверить, что код по-прежнему делает то же самое после того, как вы его обработали. Вам нужно взвесить этот риск против преимуществ рефакторинга (лучшие тесты, удобство обслуживания, более счастливые разработчики). Если вы хотите посоветовать, куда идти, я бы использовал инструменты. Вы можете быстро извлечь переменные, методы, всевозможные вещи, дав вам больше времени, чтобы проверить, что произошло. Не торопитесь. Обязательно. – DanielM

Смежные вопросы