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

时间:2009-02-02 09:17:20

标签: perl refactoring lamp

我目前正在开发一个perl网络应用程序LAMP风格,最近偶然发现了一些先前开发人员留下的死亡迷宫代码。他留下了许多神奇的数字和奇怪的逻辑,每当我不得不经历它时,它会给我带来麻烦。

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

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

感谢。

8 个答案:

答案 0 :(得分:13)

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

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

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

进行单元测试是一个好的开始。还要看看perltidy / Perl::Tidy& Perl::Critic这可能有助于通过混乱找到一些“代码味道”。

答案 1 :(得分:7)

Refactor :my => 'code'的志愿者可能会帮助你。无论如何,它可以自由地问:)

答案 2 :(得分:6)

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

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

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

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

答案 3 :(得分:5)

虽然它并没有真正重构,但PerlMonks node描述了使用B::Deparse对perl代码进行反混淆处理的几个Vim映射。

他们的例子:

当光标在正常模式下超过此行时,您可以键入_d

--$|&&s|\n|-|;

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

s/\n/-/ if --$|;

这一行:

$foo and $bar or $baz = 1;

......将替换为:

$baz = 1 unless $foo and $bar;

答案 4 :(得分:1)

带有EPIC插件的Eclipse确实有一些重构支持。不像IntelliJ对Java工具的重构那么复杂。不是100%肯定它会对你的问题有所帮助。我用它的方式是突出显示代码块并将它们移动到函数/方法中。在你的情况下,你可能会想要对那些神奇的数字进行大量搜索/替换......

我假设您将使用Test :: More来编写单元测试。其他一些EPIC工具可以帮助解决这个问题(例如“todo”标签)。

您还可以使用Test :: WWW :: Mechanize和Test :: WWW :: Selenium - 在您的情况下定义selenium测试以确保您不会破坏任何最终用户功能。虽然EPIC没有任何特别的帮助,但应该可以在调试时使用它来逐步执行代码。

祝你好运。 : - )

答案 5 :(得分:1)

请参阅Devel :: Refactor - 用于重构Perl代码的Perl扩展。 https://metacpan.org/pod/Devel::Refactor

答案 6 :(得分:0)

vim! (或任何其他文本编辑器)

确实没有一个神奇的工具来折射您的代码,有一些工具(例如)重命名变量/函数,但它无法神奇地修复可怕的代码结构或奇怪的逻辑。

答案 7 :(得分:0)

Padre有一些重构工具。 现在重命名变量的工作时间很长(大约两年左右)。

http://padre.perlide.org/

免责声明:我是Padre的撰稿人。