Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PhpStorm';s重构命令_Php_Phpstorm_Automated Refactoring - Fatal编程技术网

使用PhpStorm';s重构命令

使用PhpStorm';s重构命令,php,phpstorm,automated-refactoring,Php,Phpstorm,Automated Refactoring,我有一些PHP代码没有很好的测试覆盖率,在当前状态下不容易测试。如果我使用PhpStorm菜单中的命令,并且不做任何其他更改,我如何确保这不会改变我的应用程序的行为 其他自动重构工具有多安全 我的理解是,这些工具将应用静态分析,并且只有当应用程序执行一些非常奇怪的操作(例如依赖于debug_backtrace()的输出)时,才可能导致行为的更改。答案(过于)简单,就是它不比手动重构好也不比手工重构差 如果你有良好的测试,那么它是安全的。如果你没有,那就不是 我要说的是,在没有对每个被重构的函数进

我有一些PHP代码没有很好的测试覆盖率,在当前状态下不容易测试。如果我使用PhpStorm菜单中的命令,并且不做任何其他更改,我如何确保这不会改变我的应用程序的行为

其他自动重构工具有多安全

我的理解是,这些工具将应用静态分析,并且只有当应用程序执行一些非常奇怪的操作(例如依赖于debug_backtrace()的输出)时,才可能导致行为的更改。答案(过于)简单,就是它不比手动重构好也不比手工重构差

如果你有良好的测试,那么它是安全的。如果你没有,那就不是

我要说的是,在没有对每个被重构的函数进行单元测试的情况下,不要进行任何重构。重构不应该破坏单元测试,如果它破坏了,那么你没有重构它,你已经改变了它


过去我一直被PhpStorms重构工具以奇怪的方式折磨着,甚至导致语法错误。但是,那是很久以前的事了,工具已经向前发展了,如果您有条不紊地将更改提交给SCM,那么返回一步总是很容易的

请记住,重构只考虑您现在拥有的代码。如果您在编写代码时考虑的更多,并且您休息一下进行重构,那么它可能会对尚未完成的函数进行更改,并且您必须还原以添加更改。1)当您重构某些内容时,您将有一些作用域选项(仅仅是代码,或者还包括注释代码的用法..甚至是包含该类/方法/变量名的字符串等)2)您可以随时预览可能的更改(更准确地说,是指IDE将进行重构的当前代码的所有位置)以及在实际执行之前从中排除某些行3)如果在执行重构之前和之后进行保存(因此编辑器缓冲区没有要保存的挂起更改),则可以从本地历史记录功能还原所有更改的文件“我的理解是,这些工具将应用静态分析”--没错。@LazyOne我知道我可以在提交并部署到生产环境之前检查更改,问题是如果我知道对代码所做的唯一更改是应用重构命令的结果,那么盲目地部署到生产环境会有多安全。在阅读差异时,我可能会错过一些重要的东西。如果不先进行重构,编写测试通常是不可能的。有些代码甚至不在函数中,只是在包含PHP文件时执行。处理遗留代码总是很有挑战性,但我所说的仍然是正确的。自动或手动重构,如果不能检查代码在您处理之后是否仍然执行相同的操作,则会有风险。您需要权衡重构带来的风险和好处(更好的测试、更容易的维护、更快乐的开发人员)。如果你想知道该选哪一个,我会用这些工具。您可以非常快速地提取变量、方法以及各种各样的内容,这样您就有更多的时间来检查是否发生了正确的事情。慢慢来。经常犯错误。