道歉,看起来我的原始问题无法正确解释我在做什么以及我想要实现什么.这是一个更新的问题.
这可能是最简单的问题,但我无法在任何地方找到答案.
我有一个很大的Perl模块(比如ABC.pm),当我们添加新功能时,它会不断增长.大多数这些功能(几乎90%)发送请求和处理响应.以下是一个此类请求的代码.
sub UserDeleteRequest
{
my ($self, $inputParam) = @_;
my $config = $self->getConfig();
return $self->_doRequest (REQUEST => 'UserDeleteRequest',
PARAM => $inputParam));
}
Run Code Online (Sandbox Code Playgroud)
与此类似,编写了其他函数,并在我们添加新请求时不断增长.
拥有大文件变得难以维护.所以,我正在寻找一些最佳实践来使这更容易.我想到的一个想法是将这个大模块拆分成多个文件(如何??)
听起来你应该创建一个抽象类,你可以让其他类继承和覆盖.要使用相当模糊的示例,您的模块可能如下所示:
use strict;
package Foo;
sub new {
my $class = ref(shift) || shift;
my $self = {};
bless( $self, $class );
return $self;
}
sub processFooRequest {
...
}
sub processFooResponse {
...
}
Run Code Online (Sandbox Code Playgroud)
然后你可能有一个子类Foo :: Web,它可能看起来像这样:
use strict;
package Foo::Web;
use base "Foo";
sub processFooWebRequest {
...
}
sub processFooWebResponse {
...
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我没有使用新的构造函数,因为它继承自Foo.我可以保留具有相同名称的方法,并且它们会简单地覆盖 - 而且这可能是我应该做的 - 保持名称相同但改变内部功能.Foo中定义的任何其他方法都将被继承.
真的,你应该看看perlmod.一旦你开始理解它及其各种链接,你可能想看看Moose.