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

有帮助吗?

解决方案

首先,无论你正在做什么样的Perl编程,你都可能会找到 Perl :: Critic 非常宝贵。命令行工具是获取代码反馈最方便的工具,但您还有一个 Web界面您可以在其中上传Perl代码并获得即时自动反馈。请注意,Perl :: Critic不会教你很好的结构,但它总体上有助于改善你的风格,并引导你远离一些常见的错误。

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

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

就个人而言,当我转向测试驱动的开发模型时,我发现自己的程序结构有了很大的改进。在这样的模型下,将问题分解为易于测试的小型单元是至关重要的。如果您不熟悉Perl测试,请从 Test :: Tutorial 开始,然后再看看在其他一些测试资源书籍如果你想了解更多。使用 Devel :: Cover Devel :: NYTProf ,看看你的测试用例是什么,什么不是。拥有难以测试的代码通常是结构不良的标志。

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

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

愿你用Perl做好魔术,

其他提示

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

Moose是Perl 5的后现代对象系统,它使得编写面向对象的Perl失去了思绪。它借用了Perl 6中的所有最佳功能, CLOS Lisp ), Smalltalk ,Java, BETA OCaml ,Ruby等等,同时仍然坚持其Perl 5的根源。

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

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

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

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

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

  • 中级 Perl -- 这可能是您要问的问题的起点;涵盖开发和使用 Perl 模块(良好结构所必需的)、参考资料、复杂数据结构、面向对象等

  • 珀尔医生:改造遗留代码 -- 通过展示如何修复结构不良的 Perl 来展示结构良好的 Perl

  • 有效的 Perl 编程:使用 Perl 编写更好的程序 ——经典,但仍然有用;充满 Perl 习惯用法,将帮助您编写更多 Perl 风格的 Perl;关于 OO 的内容不多,但涵盖了更基本的编码结构,使您的代码更简洁且更具表现力。我认为这本书让我从 Perl 识字到 Perl 流利

一旦您熟悉了基本的 Perl 语法,这三者都是最好的,但是它们都没有深入到深奥的高级概念,如果您仍然刚开始使用 Perl 但已经具有其他语言的合理编程经验,那么您就无法遵循这些概念。

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

编辑:

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

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

对于需要指导的地方, PerlMonks 非常棒。

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

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

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

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

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

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

保罗。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top