オブザーバーパターンを悪用するのは簡単ですか?

初めてオブザーバーパターンを広範囲に使用しているプロジェクトがあります。私が見つけたことの1つは、このプロジェクトの典型的なオブジェクトを調べると、オブザーバーとオブザーバーのすべてが驚くほど大きくなり、オブザーバーが他のオブザーバーなどを持つ時間が驚くほど大きくなる傾向があります。

それはパフォーマンスが良いのでポイントの横にあるようです。しかし、デバッガに入っているときに、プロセスを強制終了するまでマシンをロックするインスタンス変数を出力しようとすると、ときどきデバッガに入っていることがわかりました。これは、コードが生産されている間、これが起こる機会があることを心配しています。または、これは私がパターンを乱用しているという警告にすぎません。

任意のヒント、提案?

0
@CloseVoters:質問は少し一般的ですが、それは価値があります。
追加された 著者 Andrew Grimm,
たぶん私が抱えている最大の問題は、イベント発生の非線形性で自分のコードをデバッグするのが難しくなるということです。そして、それが私のデバッガをロックしているという事実は助けにはならない。
追加された 著者 Jeremy Smith,
あなたが変更/イベントの通知を受ける必要がないときでさえ、必要なときにのみ、すべてのオブジェクトに対して、それを使用する必要があります。
追加された 著者 coreyward,

2 答え

TL; DR:そうだけれど、それはときには完璧ではないというわけではありません。

「驚くほど大きい」とは...かなり大きいです。それは実際に意味するものは何ですか?何人のオブザーバー/オブザーバーが存在しますか?彼らは深く入れ子ですか?

IMOデバッガでの処理と「実生活」の相関関係は特に強くはありません。プロダクションやテストでロックされていますか?ありますか?私はそれがデバッグプロセス/アプリケーションの人工物だと思う可能性が高くなります。

「離れた場所での気まぐれな行動」は、コードや行動について正しく推論するために理解しなければならない非局所性を作り出します。この種の開発は積極的に整理する必要があります。 「新しいオブザーバーを作成し、アーキテクトを作成し、推論を可能な限りリニアに保つ」というよりも、

2
追加された

inspect メソッドをオーバーライドして、あまり冗長でなくてもかまいません。

0
追加された