你如何命名类/包/模块

时间:2010-08-04 04:44:01

标签: perl naming-conventions moose

您如何命名一个软件包,其唯一目的是扩展另一个模块,以便您可以应用角色?我需要一个扩展(子类)Template::Context的包Moose所以我可以创建角色和特征来应用它,但我不知道该命名这个包(类)的名称。有什么建议吗?

2 个答案:

答案 0 :(得分:3)

由于Moose特有的角色化,我的名字中有Moose。模板::语境:: Moosified。或者Template :: Context :: WithAntlers。

但是有一个中间子类只是为了你可以把角色粘在它上面是很奇怪的。您可以跳过该中间人并直接声明组合类。

package Template::Context::ForBreakfast;

use Moose;
extends "Template::Context";
with "Bacon", "Eggs", "Toast";

班级名称不属于角色组成。

答案 1 :(得分:1)

我不确定这是否已获批准,但您始终尝试直接应用该角色。

package R; 
use Moose::Role; 
sub f { say 42 } 

package main; 
use URI;
R->meta->apply( Moose::Meta::Class->initialize( 'URI' ) ); 
URI->new->f

当然这需要一些加糖,绝对没有保证长期工作,并且可能完全不受支持。然而,这是MOP未经有效运作的方式。