将大型模块划分为多个文件

rpg*_*rpg 2 perl

道歉,看起来我的原始问题无法正确解释我在做什么以及我想要实现什么.这是一个更新的问题.

这可能是最简单的问题,但我无法在任何地方找到答案.

我有一个很大的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)

与此类似,编写了其他函数,并在我们添加新请求时不断增长.

拥有大文件变得难以维护.所以,我正在寻找一些最佳实践来使这更容易.我想到的一个想法是将这个大模块拆分成多个文件(如何??)

Ili*_*ion 5

听起来你应该创建一个抽象类,你可以让其他类继承和覆盖.要使用相当模糊的示例,您的模块可能如下所示:

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.