web-dev-qa-db-ja.com

Python多くのメソッドを持つクラスを複数のクラスに分割する必要がありますか?

30以上のメソッドを持つクラスがあります。同じデータにアクセスする必要があるため、これらはすべて同じクラスの一部であることに意味があります。

しかし、大きなクラスをいくつかの小さな抽象クラスに(機能、タイプ、使用などによって)分割し、すべての小さなクラスからメインクラスを拡張(つまり、多重継承)することは意味がありますか?

8
Jace Browning

番号。

複数の異なるクラスを作成し、それらをすべて1つのクラスで継承しても、状況はあまり改善されていません。たくさんのクラスのふりをしているクラスは1つだけです。実装をはるかに複雑にし、実際には部分をまったく分離していません。 AがBおよびCから継承する場合、AはBおよびCと同じくらい複雑です。

30を超えるメソッドがあることは、分割することのメリットがあることを示唆しています。多分それを分割する賢い方法があるでしょう。たまにできないこともありますが、その場合は、大規模なクラスを設けることをお勧めします。しかし、オブジェクトをいくつかのオブジェクトに分割する賢い方法がしばしばあります。

6
Winston Ewert

データアクセスが必要なからといって、同じクラスに属しているわけではありません。それらが不変条件を保護する責任を共有している場合、または消費者が卸売りで渡したいと思うものの自然にまとまりのあるグループである場合、それらは同じクラスに属します。

より可能性の高いシナリオは、コンストラクターを介して渡されたデータ(またはデータプロバイダー)がすべて含まれている(または依存関係が逆になっている)複数のクラスがあることです。

0
Telastyn