我目前正在开发一个perl web应用程序LAMP风格,最近偶然发现了一些以前的开发人员留下的死亡迷宫代码.他留下了许多神奇的数字和奇怪的逻辑,每次我必须通过它时,它让我头疼.
我现在正在学习单元测试,所以我想找到一些有用的工具来重构代码并编写单元测试,以确保我不会意外破坏任何东西.
对LAMP perl的任何好的重构工具的任何建议?最好免费:)
谢谢.
我认为Eclipse/EPIC有"一些"Perl重构工具......但是请不要引用我;-)
也许值得一看Komodo.但是完整版本不像Eclipse/EPIC那样免费.您可以尝试他们的开源版本Komodo Edit,但我想它不会具备所有功能?
我没有使用上面的或任何其他重构工具...我使用vi/vim和TextMate编辑器以及他们提供的内容(或者我迄今为止在每个编辑器中找到的内容!).
进行单元测试是一个良好的开端.还可以看看perltidy/Perl :: Tidy&Perl :: Critic,这可能有助于通过混乱找到一些"代码味道".
也许,Refactor上的志愿者:我的=>'代码'可以帮到你.无论如何,它可以自由地问:)
Perl的动态特性意味着很难为它创建重构工具.
但是,关于测试,您应该能够组合一些回归测试来帮助您.这可以通过现在的代码开始并捕获其当前输出来实现.这可能是从命令行运行CGI脚本并将生成的HTML保存到文件.
一旦你捕获了这个,你可以改变代码,当你去检查HTML没有改变,这意味着代码没有破坏.当发生更改时,您可以找到错误,或更改测试以接受新HTML正确.
这可能是一件苦差事,但从长远来看会让你的生活更轻松.您应该尝试自动化这些测试以使其易于运行.Checkout Test :: WWW :: Mechanize和Test :: LongString以及所有其他.
虽然它并没有真正重构,但是这个PerlMonks节点描述了一些使用B :: Deparse对perl代码进行反混淆处理的Vim映射.
他们的例子:
您可以_d
在正常模式下将光标悬停在此行上时键入:
--$|&&s|\n|-|;
......它将被替换为:
s/\n/-/ if --$|;
这一行:
$foo and $bar or $baz = 1;
......将被替换为:
$baz = 1 unless $foo and $bar;