我应该将perldoc的继承方法复制到子类的文档吗?

时间:2012-07-18 12:06:14

标签: perl oop perldoc

我写了一个类foo.pm,它从Web服务中收集一些数据。在foo.pm内部,我添加了perldoc来描述功能以及使用的简短指南。它的所有方法都有参考。

我还编写了一个子类cachedFoo.pm,它使用foo.pm作为基类,围绕foo的{​​{1}}方法包装自己的构造函数并升级{{ 1}}使用数据库连接来缓存结果。我已经为new添加了perldoc以获取更多内容。

现在我只希望我的同事们使用foo。我应该将所有继承方法的perldoc从cachedFoo.pm复制到cachedFoo.pm,还是应该说“查看基类的访问者文档”?或者可能有另一种方式?

3 个答案:

答案 0 :(得分:3)

不要重复文档,它会不同步,只提供原始文档的链接并记录差异。

答案 1 :(得分:3)

在界面描述的开头附近,可以明确地指出其他类,请参阅下面的最佳实践文档示例。然后,您的pod覆盖测试应该使用Pod::Coverage::CountParents来考虑继承。

package cachedFoo;
⋮
=head1 INTERFACE

=head2 Composition

    cachedFoo
        ISA foo
        DOES somerole

All methods and attributes not mentioned here are
inherited from L<foo> or mixed in from L<somerole>.

=head2 Methods

=head3 C<cache_database_thing>

Blah blah blah, Mr. Freeman

明确命名每个组合方法不会缩放。我不能推荐这个:

=head3 C<quux>

See L<foo/quux>.

答案 2 :(得分:2)

您应该考虑重命名模块。我认为Foo :: Cached是常见的做法。我通常只在相关部分表示继承,例如:

=head1 METHODS

L<Foo::Cached> inherits all methods from L<Foo> and implements the following methods by itself:

...

如果您仍想查看所有继承的方法,可以使用Pod::Inherit创建临时podfile,其中还包含来自父模块的POD(或者如果要构建更大的POD,可以尝试{{3 }}