Emm*_*mel 9 oop perl class moose
这更像是一个用例类型的问题......但也足够通用,可以更广泛地应用:
简而言之,我正在研究一个或多或少是命令行包装器的模块; OO自然而然.没有太多细节(除非有人想要它们),系统没有疯狂的复杂程度,但在这个框架中有三到四个对象确实很自然.最后,它是一个开源的东西,我将放在那里,而不是一个模块与同一公司的一些开发人员一起工作.
首先,我使用Class :: Std实现了OO,因为Perl Best Practices(Conway,2005)为什么要使用由内到外的对象做出了很好的论据.完全控制访问哪些属性等等,适当的封装等.此外,他的设计非常简单和聪明.
我喜欢它,但后来注意到没有人真正使用它; 事实上,康威自己似乎不再推荐这个了吗?
所以我感动了每个人的最爱,穆斯.它很容易使用,虽然方式过度杀戮功能明智的我想做什么.主要的重大缺点是:它有一大堆模块依赖,迫使我的模块用户全部下载.一个小小的缺点是它的功能比我真正需要的更多.
有什么建议?不方便开发人员强迫他们使用可能过时的模块,或强迫模块的每个用户下载Moose及其所有依赖项?
对于适当的Perl OO框架是否有第三种选择,这种框架很受欢迎,但这两种框架都没有?
目前接受的"现代Perl OO框架"是Moose.我会说让你的用户下载它,或者你可以使用PAR :: Packer将它与你的模块捆绑在一起.
引自" 但我不能使用CPAN "(...因为我的用户不想安装东西):
假设您只是在处理用户tarball,那么Module :: Install提供了一个解决方案 - 如果您将脚本放入脚本/然后执行
Run Code Online (Sandbox Code Playgroud)install_script(glob 'script/*'); auto_install;在你的Makefile.PL中,不仅'make install'将你的脚本放在适合你的地方,但'make installdeps'会调用cpan(或者如果存在,cpanplus)来为你安装所有缺少的依赖项.