我只是在学习Perl。
什么时候建议使用OO Perl而不是非OO Perl?
除非项目只是< 10行。
TIA
答案 0 :(得分:19)
了解何时使用面向对象设计的10个标准
设计很大,或者可能会变大
当数据聚合成明显的结构时,特别是如果每个聚合中有大量数据
例如,IP地址不是一个好的候选者:只有4个字节的信息与IP地址相关。通过海关的移民有很多与他有关的数据,如姓名,原籍国,携带行李,目的地等。
当数据类型形成允许我们使用继承的自然层次结构时。
继承是OO最强大的功能之一,使用它的能力是一个标志。
对数据的操作因数据类型而异
GIF和JPG可能会以不同的方式完成裁剪,即使它们都是图形。
以后可能需要添加数据类型
OO为您提供了将来扩展的空间。
当数据之间的交互最好由运营商
显示时通过使用可以重载的运算符可以最好地显示某些关系。
当组件的实施可能发生变化时,尤其是在同一个程序中
当系统设计已经面向对象时
当大量客户使用您的代码时
如果您的代码将分发给将使用它的其他人,标准界面将使维护更加轻松。
当您拥有应用了许多不同操作的数据时
例如,图形图像可能会模糊,裁剪,旋转和调整。
- 醇>
当操作类型具有标准名称(检查,处理等)时
对象允许您拥有
DB::check
,ISBN::check
,Shape::check
等,而不会在支票类型之间产生冲突。
答案 1 :(得分:6)
答案 2 :(得分:5)
我认为你不应该用代码行来衡量它。
你是对的,通常当你只是编写一个简单的脚本时,OO可能过多,但我认为你应该对10行的方法更加灵活。
在所有使用OO Perl Rememebr到use Moose(或鼠标)的情况下
答案 3 :(得分:3)
这个问题与Perl没什么关系。问题是“如果有选择,我应该使用OO吗?” “给出一个选择”位是因为在某些语言(例如Java)中,你真的没有任何选择。
答案是“有意义的时候”。想想你想要解决的问题。问题是否适合类和对象的OO概念?如果确实如此,请使用OO。否则使用其他一些范例。
Perl非常灵活,您可以轻松编写过程,功能或OO Perl,甚至可以将它们混合在一起。不要因为其他人而忙着做OO。学习为每项任务使用正确的方法。
所有这些都需要经验和实践,所以一定要尝试所有这些方法,甚至可以采取一些较小的问题,并以多种方式解决它们,看看每种方法是如何工作的。
答案 4 :(得分:1)
Damian Conway在此Perl Best Practices中有一段话。你必须遵循它并不是一个规则,但是在我不知道你正在做什么的情况下我可以给出更好的建议。
如果这是一个更好的链接到本书的地方,那么这是the publisher's page。