コードの再利用を最大化することを目標に、Python コード用にかなり複雑なクラス階層を作成しました。次のようになります。
class ElectionMethod
class IterativeMethod
class SNTV
...
class NonIterativeMethod
class OrderDependent
class CambridgeSTV
...
class OrderIndependent
class WIGM
class ERS97STV
...
class Recursive
class MeekSTV
...
クラス階層のリーフのみがオブジェクトにインスタンス化されます。これは、コードの再利用を最大化するという目的には役立ちますが、コード自体は複雑で (一部のクラスには 20 ほどのメソッドがあります)、多くのレベルを考えると、何かが実装されている場所を見つけるのに時間がかかる可能性があります。
機能のチャンクを引き出して、その機能を別のオブジェクトに入れようとしましたが、ほとんどすべての機能が共通のデータに依存しているため、これを行う良い方法が見つかりませんでした. つまり、一部のコードを別のオブジェクトに移動できますが、必要なデータを取得するために大きな複雑な階層を参照する必要があるため、実際にはカプセル化されていません。
これをより管理しやすくする方法について誰かアドバイスはありますか?