这更像是一个用例类型的问题......但也足够通用,可以更广泛地适用:
简而言之,我正在开发一个或多或少是命令行包装器的模块。OO 自然。不涉及太多细节(除非有人想要它们),系统并没有非常复杂,但在这个框架中拥有三四个对象确实感觉很自然。最后,我将把它放在那里,而不是由同一家公司的几个开发人员共同开发的模块。
首先,我使用 Class::Std 实现了 OO,因为 Perl Best Practices (Conway, 2005) 为为什么要使用由内而外的对象提出了很好的论据。完全控制访问哪些属性等等,适当的封装等等。而且他的设计非常简单和聪明。
我喜欢它,但后来注意到没有人真正使用它;事实上,康威本人似乎不再推荐这个了?
所以我搬到了大家最喜欢的Moose。它很容易使用,尽管对于我想要做的事情来说方式太过分了。最大的主要缺点是:它有大量的模块依赖关系,迫使我的模块的用户全部下载它们。一个小缺点是它的功能比我真正需要的要多得多。
什么是建议?强迫其他开发人员使用可能已过时的模块,或者强迫模块的每个用户下载 Moose 及其所有依赖项,给其他开发人员带来不便?
对于流行的适当的 Perl OO 框架,是否有第三种选择,但这两个都没有?