4

foo.pmWeb サービスからデータを収集するクラスを作成しました。内部foo.pmには、機能を説明するための perldoc と、使用法に関する簡単なガイドを追加しました。すべてのメソッドのリファレンスがあります。

cachedFoo.pmまた、基本クラスとして使用するサブクラスを作成しfoo.pm、独自のコンストラクターをfoonewメソッドにラップし、データベース接続でアップグレードfooして結果をキャッシュします。私はすでに追加cachedFoo.pmのもののために perldoc を追加しました。

今は同僚だけに を使ってもらいたいですcachedFoo.pm。から継承されたすべてのメソッドの perldoc をコピーする必要がありますかfoo.pmcachedFoo.pmそれとも単に「アクセサについては基本クラスのドキュメントを参照してください」と言うべきですか? それとも別の方法がありますか?

4

3 に答える 3

3

ドキュメントを複製しないでください。同期がとれなくなり、元のドキュメントへのリンクを提供して、違いを文書化するだけです。

于 2012-07-18T13:27:52.527 に答える
3

インターフェイスの説明の開始近くで、他のクラスを目立つように指定するだけで十分です。以下のベスト プラクティス ドキュメントの例を参照してください。ポッド カバレッジ テストでは、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>.
于 2012-07-18T15:17:38.450 に答える
2

モジュールの名前を変更することを検討する必要があります。Foo::Cached が一般的な方法だと思います。私は通常、関連するセクションでのみ継承を示します。

=head1 METHODS

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

...

継承されたすべてのメソッドを引き続き表示したい場合は、Pod::Inheritを使用して、親モジュールからの POD も含む一時的なポッドファイルを作成できます (または、より大きなものを構築している場合は、Pod::Weaverを試すことができます。

于 2012-07-18T15:39:32.247 に答える