使用Moo(se)而不是Perl OO的真正优势

时间:2015-03-05 12:01:24

标签: perl moose moo

我目前正在一家公司工作,我们正在进行Perl开发。然而,代码非常混乱,使用了非常古老的Perl习语,所以我决定慢慢地清理它并教我的同事关于Modern :: Perl,良好的软件设计,OOP抽象,耦合,继承,SOLID原则等 我有一个缺点,就是我在这里工作了一个月,所以我在这里很新。

我的问题是:我可以(如果是这样的话)说服他们考虑从普通的Perl OO切换到Moo(se)吗?它的优点是什么?我需要他们考虑的充分理由。

使用这些模块是否有很大的性价比?我从经验中知道,使用这些模块非常舒服(特性也非常好),但我担心由于性能原因他们会拒绝切换。

因此。有没有优势,你会如何描述那些陷入2000年前时代的Perl开发者?

2 个答案:

答案 0 :(得分:9)

对于Moose而言,PerlMonksStackoverflow上的表现有一些有趣的讨论。它的要点似乎是穆斯有一个重要的启动惩罚,但在此之后并不多。

但是,我认为这里有一个更大的问题:什么时候应该重写现有代码?

选择新工具/方法时需要考虑两个不同的阈值:

  1. 工具/方法XYZ是有益的,因此我们应该在编写新代码时使用它。
  2. 工具/方法XYZ非常有用,我们必须重写现有代码才能使用它。
  3. 当现有的范例很好时,很多人都犯了使用他们喜欢的范例重写一大堆完美代码的错误。这不仅浪费了工作,而且还有引入新漏洞和使最终产品比以前更糟的危险。

    更改现有代码库使用的对象系统接近于对代码的基本重写。这是一个主要的成本和风险,你需要一个很好的理由去做。不仅仅是“Moose更好地编写代码”。

    当编写一段与遗留代码完全分开的新代码时,可能是尝试Moose的好时机。但我怀疑改变所有现有代码并不合理。 (另外,从实际上让人们倾听你的想法的角度来看,无论如何,小的增量变化都会更好。)

答案 1 :(得分:4)

我首先要问 - 你的同事是否理解这些术语的含义以及为什么它们是好东西?采用新范式总是一个艰难的挑战,因为即使你的新方式也是如此。在各方面都更好......你将创建一个仍然需要维护的遗留代码库。或者重做。

说服某人去过OO'如果他们已经建立了他们的Perl理解,从bash脚本到perl hacking ......可能是一个挑战。他们可能 - 非常正确 - 指出虽然有转换的优势,但最低的共同点是"适用。很多人都知道非驼鹿' perl与那些了解Moose的人相比。 (这可能对您有利,但指出它是一项有用的技术专业,可以提高他们未来的就业能力)

毕竟,有一个原因是为什么今天仍然使用shell脚本 - 因为它们是一个简单,直接且易于解决的直接问题解决方案。

首先,介绍一下您的计算机科学原理。让你的同事去购买'对你概述的事情。这需要时间。可能需要很多时间。如果代码风格没有改变15年,这意味着那里的编码人员对事物的方式感到满意。

然后,你需要向同事证明为什么你的方式'足够让他们费心去学习它。新东西'一直都是这样,总会有人想尝试新的和酷的东西。你会看起来像这个人。就他们而言,目前的家居风格是'工作正常。

您可能会发现在新风格中实施新功能令人信服。让他们购买'你做它作为概念的证明。你可能会发现其他几个程序员也喜欢这个想法。

但无论如何 - 你必须接受这样一种非常现实的可能性:没有人愿意支付“遗产”的技术债务。你这样做会创造出来。通过在您的组织中使用一组有限的编码范例,可以获得许多业务优势。你需要考虑如何使用这两种方法。

这不是一个新的讨论--OO编程总是让那些看不到它的人 - 他们看到了开销,而不是好处。我们使用面向对象的原因并不是因为它更有效率。这是因为它是构建健壮,可靠和可测试代码的好方法。这将是你的'#pitch;'采用驼鹿。我建议你看看各种形式的测试,并准备一个测试套件的演示,因为这些是大多数程序员讨厌的东西:)