Чи легко зловживати шаблоном спостерігача?

У мене є проект, в якому я вперше широко використовую модель спостереження. Одне, що я знайшов, полягає в тому, що якщо я оглядаю типовий об'єкт у цьому проекті, воно, як правило, є надзвичайно великим з усіма спостерігачами та спостерігачами, а потім часами, коли спостерігач має інших спостерігачів і т. Д.

Це, здається, недалеко від точки, оскільки продуктивність в порядку. Але коли я намагаюся надрукувати змінну екземпляра, вона буде заблокувати мою машину, поки я не вб'ю процес, але я з'ясував це іноді. Це мене занепокоїло тим, що для цього може бути деяка можливість, коли код буде вироблений. Або це лише попередження, що я зловживаю цією схемою.

Будь-які поради, пропозиції?

0
@CloseVoters: Питання трохи загальне, але це варто.
додано Автор Andrew Grimm, джерело
Може бути, найбільша проблема у мене полягає в тому, що це ускладнює налагодження мого коду з нелінійністю стрільби подій. І той факт, що блокування мого відладчика не допомагає.
додано Автор Jeremy Smith, джерело
Ну, ви повинні використовувати його лише тоді, коли це потрібно, порівняно з усіма вашими об'єктами, навіть якщо їм не потрібно повідомляти про зміни/події.
додано Автор coreyward, джерело

2 Відповіді

TL, DR: Так, але це не означає, що іноді це не ідеально.

"Дивно великий" означає ... це досить велике; що означає це насправді ? Скільки спостерігачів/спостерігачів є? Чи вони глибоко вкладені?

ІМО кореляція між виконанням речей у відладчику та "реальним життям" не є особливо сильною; має колись заблокований у процесі виробництва чи тестування? Я вважаю, що це артефакт налагоджувального процесу/додатка.

"Потрясіння дії на відстані" створює не місцевість, яку необхідно зрозуміти, щоб правильно висвітлити код та поведінку. Цей вид розвитку потрібно агресивно доглядати; замість того, щоб казати "Я просто будую нового спостерігача", архітектор його і продовжує міркувати як можна лінійніше.

2
додано

Ви можете переопределити метод inspect , щоб він був менш докладним.

0
додано