Is het gemakkelijk om het waarnemerspatroon te misbruiken?

Ik heb een project waarbij ik het waarnemerspatroon voor het eerst uitvoerig gebruik. Een ding dat ik echter heb gevonden, is dat als ik een typisch voorwerp in dit project inspecteer, het verbazingwekkend groot is met alle waarnemers en waarnemingen, en dan de tijden dat een waarnemer andere waarnemers heeft, enz.

Dat lijkt niet het punt te zijn dat de uitvoering prima is. Maar ik heb gemerkt dat als ik in de debugger af en toe probeer een instantievariabele af te drukken dat het mijn machine blokkeert totdat ik het proces stopzet. Dit heeft me bezorgd gemaakt dat er een kans is dat dit gebeurt terwijl de code in productie is. Of dat dit slechts een waarschuwing is dat ik het patroon misbruik.

Tips, suggesties?

0
@CloseVoters: de vraag is een beetje algemeen, maar het is de moeite waard.
toegevoegd de auteur Andrew Grimm, de bron
Misschien is het grootste probleem dat ik heb, dat het het moeilijker maakt om mijn code te debuggen met de niet-lineariteit van het afvuren van gebeurtenissen. En het feit dat het mijn debugger blokkeert helpt niet.
toegevoegd de auteur Jeremy Smith, de bron
Welnu, je zou het alleen moeten gebruiken wanneer je het nodig hebt, of voor al je objecten, zelfs als ze niet op de hoogte gebracht hoeven te worden van veranderingen/gebeurtenissen.
toegevoegd de auteur coreyward, de bron

2 antwoord

TL; DR: Ja, maar dat betekent niet dat het soms niet perfect is.

"Verbluffend groot" betekent ... het is vrij groot; wat betekent dat eigenlijk ? Hoeveel waarnemers/waarnemers zijn er? Zijn ze diep genest?

IMO de correlatie tussen het doen van dingen in een debugger en "het echte leven" is niet bijzonder sterk; is het ooit vastgelopen in productie of testen? Ik denk eerder dat het een artefact is van het foutopsporingsproces/de app.

"Spookachtige actie op afstand" creëert een niet-lokaliteit die begrepen moet worden om correct te redeneren over code en gedrag. Dit soort ontwikkeling moet agressief worden verzorgd; in plaats van te zeggen "Ik zal gewoon een nieuwe waarnemer creëren", het in te bouwen en de redenering zo lineair mogelijk te houden.

2
toegevoegd

U kunt de methode inspecteren overschrijven om minder uitgebreid te zijn.

0
toegevoegd