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

Jar*_*red 13 perl structure

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

pjf*_*pjf 24

首先,无论您正在做什么样的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 :: CoverDevel :: NYTProf这样的工具来查看您的测试用例是什么以及它们不是什么.拥有难以测试的代码通常是结构不佳的标志.

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

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

愿你用Perl做好魔术,

保罗


mel*_*aos 10

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

Moose是Perl 5的后现代对象系统,它使编写面向对象的Perl失去了作用.它借用了Perl 6,CLOS(Lisp),Smalltalk,Java,BETA,OCaml,Ruby等所有最好的功能,同时仍然忠实于Perl 5的根源.

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


Dav*_*man 7

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

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

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


sys*_*ult 6

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

编辑:

我忘了提到Perl Design Patterns.该PerlDesignPatterns网站是学习Perl的设计模式很好的资源或引用.


xdg*_*xdg 6

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

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

  • Perl Medic:转换旧版代码 - 通过展示如何修复结构不良的Perl来演示结构良好的Perl

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

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