有没有什么好的工具可以重构Perl Web代码?

mel*_*aos 14 perl lamp refactoring

我目前正在开发一个perl web应用程序LAMP风格,最近偶然发现了一些以前的开发人员留下的死亡迷宫代码.他留下了许多神奇的数字和奇怪的逻辑,每次我必须通过它时,它让我头疼.

我现在正在学习单元测试,所以我想找到一些有用的工具来重构代码并编写单元测试,以确保我不会意外破坏任何东西.

对LAMP perl的任何好的重构工具的任何建议?最好免费:)

谢谢.

dra*_*tun 13

我认为Eclipse/EPIC有"一些"Perl重构工具......但是请不要引用我;-)

也许值得一看Komodo.但是完整版本不像Eclipse/EPIC那样免费.您可以尝试他们的开源版本Komodo Edit,但我想它不会具备所有功能?

我没有使用上面的或任何其他重构工具...我使用vi/vim和TextMate编辑器以及他们提供的内容(或者我迄今为止在每个编辑器中找到的内容!).

进行单元测试是一个良好的开端.还可以看看perltidy/Perl :: Tidy&Perl :: Critic,这可能有助于通过混乱找到一些"代码味道".


sas*_*nin 7

也许,Refactor上的志愿者:我的=>'代码'可以帮到你.无论如何,它可以自由地问:)


Evd*_*vdB 6

Perl的动态特性意味着很难为它创建重构工具.

但是,关于测试,您应该能够组合一些回归测试来帮助您.这可以通过现在的代码开始并捕获其当前输出来实现.这可能是从命令行运行CGI脚本并将生成的HTML保存到文件.

一旦你捕获了这个,你可以改变代码,当你去检查HTML没有改变,这意味着代码没有破坏.当发生更改时,您可以找到错误,或更改测试以接受新HTML正确.

这可能是一件苦差事,但从长远来看会让你的生活更轻松.您应该尝试自动化这些测试以使其易于运行.Checkout Test :: WWW :: Mechanize和Test :: LongString以及所有其他.


Ada*_*ire 5

虽然它并没有真正重构,但是这个PerlMonks节点描述了一些使用B :: Deparse对perl代码进行反混淆处理的Vim映射.

他们的例子:

您可以_d在正常模式下将光标悬停在此行上时键入:

--$|&&s|\n|-|;
Run Code Online (Sandbox Code Playgroud)

......它将被替换为:

s/\n/-/ if --$|;
Run Code Online (Sandbox Code Playgroud)

这一行:

$foo and $bar or $baz = 1;
Run Code Online (Sandbox Code Playgroud)

......将被替换为:

$baz = 1 unless $foo and $bar;
Run Code Online (Sandbox Code Playgroud)