我如何学习在Perl中编写结构良好的程序?

时间:2009-01-04 03:22:09

标签: perl structure

我开始学习Perl,但我以前的编程经验大部分都是强调面向对象编程的语言,比如C#和Java。我发现的所有Perl示例都是长单函数程序,我发现自编写代码的方式相同。是否有任何资源或教程可用于编写可维护的结构良好的程序?

9 个答案:

答案 0 :(得分:24)

首先,无论您正在做什么样的Perl编程,您都可能会发现Perl::Critic非常宝贵。命令行工具是获取代码反馈最方便的工具,但您还可以使用web interface上传Perl代码并接收即时自动反馈。请注意,Perl :: Critic不会教你很好的结构,但它总体上有助于改善你的风格,并引导你远离一些常见的错误。< / p>

要使用Perl :: Critic,我建议您获取Perl Best Practices(PBP)的副本。它包含了很多Perl :: Critic所依据的详细信息。即使您不同意本书中的特定指南,它也会让您思考关于您的编码方式,这非常非常有价值。你不必为一本书付钱,但两者互相恭维,并且你会在PBP中找到你不会从Perl :: Critic那里得到的冗长的讨论。

如果您已经使用过其他OO语言和OO设计,那么您可能会发现Moose是一个舒适的过渡。 Moose非常稳定,得到很好的支持,拥有庞大而活跃的社区(特别是通过IRC)。 Moose取代了几乎所有现有的OO Perl建议,包括我自己的建议。面向对象的设计是常见的原因;它对很多项目都有意义,并且没有理由在Perl中使用它。

就个人而言,当我转向测试驱动的开发模型时,我发现自己的程序结构有了很大的改进。在这样的模型下,将问题分解为易于测试的小型单元是至关重要的。如果您刚开始使用Perl进行测试,请从Test::Tutorial开始,如果您想了解更多信息,请查看其他testing resourcesbooks。使用Devel::CoverDevel::NYTProf之类的工具来查看您的测试用例的内容以及它们的内容。拥有难以测试的代码通常是结构不良的标志。

说完这一切之后,迄今为止最好的老师是与经验丰富的贡献者一起参与现有的Perl项目。了解他们是如何做事的,当你做出贡献时,请考虑他们的建议。如果你想要一个真正的应用程序具有令人敬畏的酷炫价值,似乎已经吸引了最好和最聪明的Perl社区,那么我建议你加入Padre, the Perl editor

如果(无论出于何种原因)您无法参与其他项目,请考虑将代码示例发布到社区,例如Stack Overflow或PerlMonks。更好的是,如果你可以使你的代码开源,那么这样做,并征求反馈意见。所有编程语言都可以与熟悉它们的人学习,Perl也不例外。

愿你用Perl做好魔术,

答案 1 :(得分:13)

答案 2 :(得分:10)

如果你正在学习OO Perl,你可以继续学习下一件大事并开始学习Moose

Moose是Perl 5的后现代对象系统,它使编写面向对象的Perl失去了单调乏味。它借用了Perl 6的所有最佳功能,CLOSLisp),Smalltalk,Java,BETAOCaml,Ruby等等,同时仍保留忠实于它的Perl 5根。

Moose 100%生产就绪,在许多系统中大量使用并且每天都在增长。

答案 3 :(得分:7)

如果您已经知道如何编写结构良好的程序,并且想要编写结构良好的Perl,但唯一的障碍就是大量分散在网络和拒绝的古老,狡猾,意大利面条代码示例死...

忽略这些例子。或者至少忽略他们糟糕的结构,只关注你需要学习的小句法。

Perl中没有任何内容可以帮助您编写错误的代码。如果您已经知道如何用其他语言编写好的代码,那么您可以在Perl中应用完全相同的原则和实践。这只是一个纪律问题,就像任何其他语言一样。

答案 4 :(得分:6)

除了上面提到的消息来源,我强烈推荐这本书 Mark Jason Dominus的“高阶Perl”。 如果你买得起它,那么作者就把这本书免费放在他的网站上,就像在免费啤酒中Free Higher Order Perl一样。对于PDF版本:direct download URL(1.9 MB)。

编辑:

我忘了提到Perl Design Patterns。 PerlDesignPatterns网站是学习Perl设计模式的非常好的资源或参考。

答案 5 :(得分:6)

如果您觉得自己已经在学习基础知识并希望改进程序结构,那么我建议这些书籍,最好按照这个顺序阅读:

  • Intermediate Perl - 这可能是你要问的起点;涵盖开发和使用Perl模块(对于良好的结构至关重要),参考,复杂的数据结构,OO等

  • Perl Medic: Transforming Legacy Code - 通过展示如何修复结构不良的Perl来演示结构良好的Perl

  • Effective Perl Programming: Writing Better Programs with Perl - 一个经典的,但仍然有用;充满了Perl成语,可以帮助你写更多Perl-ish Perl;在OO上并不多,但涵盖了更基本的编码结构,使您的代码更简洁,更具表现力。我认为这是一本让我从Perl读写到Perl流利的书

一旦你对基本的Perl语法感到满意,这三个都是最好的,但是如果你仍然在Perl中开始但在其他方面有合理的编程经验,那么它们都没有太深入到你无法理解的深奥的高级概念中语言已经。

答案 6 :(得分:3)

答案 7 :(得分:2)

就个人而言,在我开始学习Java之前,我没有写好OO Perl。我建议你花一点时间用真正的OO语言学习OO,并将你学到的东西应用到Perl。

对于一个需要辅导的地方,PerlMonks是伟大的。

答案 8 :(得分:0)

以你编写C的方式编写Perl,尽管你应该利用BEGIN块和模块的一些东西。它应该被格式化,使其看起来或多或少像旧式K&amp; R C代码。

至于结构,请跳过OO并将其设置为ADT样式:

http://en.wikipedia.org/wiki/Abstract_data_type

基本上你通过使用数据结构来实现这一点,你可以在OO中使用对象(并将算法分离到他们自己的函数中)。

然后,选择一种方法来做事并坚持下去,一致性对可读性至关重要。

如果您管理它,代码既可读又易于理解。

保罗。