2

Path専用モジュールで、約10個のメソッドが定義されているクラスが呼び出されましたPath.py。最近、 用にさらに 5 つのメソッドを作成する必要がありましたがPath、これらの新しいメソッドは非常に曖昧で技術的であり、90% の確率で無関係です。

それらのコンテキストが明確になるように、それらを配置するのに適した場所はどこでしょうか? もちろん、それらをクラス定義に入れることもできますが、重要なものをあいまいなものから分離しておくのが好きなので、それは好きではありません。

現在、私はこれらのメソッドを別のモジュールで定義された関数として持っていますが、それらを別々に保つために、それらをバインドされたメソッドとして持つ方が良いでしょう. (現在、Pathインスタンスを明示的なパラメーターとして受け取ります。)

誰か提案がありますか?

4

6 に答える 6

4

メソッドがパスに関連している場合、どんなにあいまいであっても、クラス自体に存在する必要があると思います。

パス関連の機能を持つ場所が複数ある場合、問題が発生します。たとえば、いくつかの機能が既に存在するかどうかを確認したい場合、新しいプログラマーは他のあまり目立たない場所を確認する方法をどのように知るのでしょうか?

関数を重要度順に並べるのが良い方法だと思います。聞いたことがあるかもしれませんが、クラスの public メンバーを最初に配置し、private/protected メンバーを後に配置することを提案する人もいます。クラスの一般的なメソッドを、あいまいなメソッドよりも上位に配置することを検討できます。

于 2009-09-05T15:33:41.477 に答える
2

これらのメソッドをどうしても別のソース ファイルに配置したい場合、およびそれらをメソッド内に配置したい場合は、別のソース ファイルを使用して mixin クラスを定義し、Path クラスを使用することで、両方の目標を達成できます。そのメソッドをインポートし、その mixin から多重継承します。したがって、技術的には十分に実現可能です。

ただし、この方法はお勧めしません。重要な目的 (再利用や繰り返しの削除など) にのみ「大砲」(多重継承など) を使用する価値はあります。特に重要な目標。

これらの「あいまいな方法」が何の役割も果たさなかった場合、それらを実装することはないでしょう。そのため、ドキュメント文字列とコメントでそれらが何のためにあるのかを明確にし、おそらくそれらがほとんど必要ないことを明示的に言及し、そのままにしておきます。

于 2009-09-05T15:39:15.860 に答える
0

名前の先頭にアンダースコアを付け_て、読者が気にする必要がないことを示します。従来、他の言語のプライベート メンバーと同じものです。

于 2009-09-05T15:31:54.563 に答える
0

それらを Path クラスに入れ、コメントまたは docstring を使用して「あいまい」であることを文書化します。必要に応じて最後に分けてください。

于 2009-09-05T15:36:20.863 に答える
0

ちょっと待って、私は何かを考えました-Path.pyモジュールでそれらを定義するだけで、あいまいなメソッドはすべて、現在存在する別のモジュールから関数を呼び出すワンライナーになります。この妥協により、あいまいなメソッドは、ファイルの最後の 50% ではなく、おそらく 10 行で構成されます。

于 2009-09-05T15:45:08.110 に答える
0

「Utilties」などと呼ばれる Path クラスのプロパティからアクセスできるようにすることをお勧めします。例: Path.Utilities.RazzleDazzle. これは、オートコンプリート ツールと一般的なメンテナンスに役立ちます。

于 2011-11-06T17:09:05.930 に答える