状況は次のとおりです。あまりにも多くのことをしているクラスがあります。主に構成情報にアクセスするためのものですが、データベース接続もあります。これはシングルトンとして実装されているため、これはまた、ほとんどのコードがかなり密接に結合されているため、単体テストを難しくしています。これは、インポート時の依存関係を作成する(Pythonでこれをやっている)ので、特定のモジュールを特定の順序でインポートする必要があるため、さらに問題があります。理想的には、私はこれを2つのクラスに分割し、それを非シングルトンにしたいと思います。どちらがもっと悪いのですか:不必要なシングルトンや神のオブジェクトですか?
幸いにも私の雇用主は、この種のテストが良いという事実に暖かくなり、コードをよりテスト可能にするなら、私がこのような変更を加えることを許可する意思があります。しかし、私は彼らが私にを過度に費やすことを喜んで受け入れるのではないかと疑う。時間。むしろ、私はむしろ根本的すぎることを試みるのではなく、徐々にこれを修正したいと思います(シングルトン)構成オブジェクトと(非シングルトン)データベースオブジェクトに
- ブレーク設定オブジェクト:
だから、私はここに3つの選択肢を参照してください。これは少なくとも、インポート時の依存関係としてデータベースを削除することを可能にします。
- 構成オブジェクトを非シングルトンにして、それを必要とするオブジェクトに渡します。私はこれが短期的なニーズをよりよく解決すると感じていますが、かなり時間がかかると思います。
- あなたの答えであなたが提案したことを考えなかったことをしてください。 :-)
どうすればいいですか?
私は思っていなかったものが*と思われます。オブジェクトを分割することで、シングルトンを解除することが容易になります(単語の場合)。 –
どのようにdesingulate? –
または複数かもしれませんか? :-) –