Фьючерсы / Монады против событий

10

В рамках приложения, когда влияние производительности может быть проигнорировано (максимум 10-20 событий в секунду),
что является более обслуживаемым и гибким для использования в качестве предпочтительного средства связи между модулями - события или фьючерсы / обещания / монады ?

Часто говорят, что события (pub / sub, mediator) допускают слабую связь и, следовательно, - более удобное в обслуживании приложение ... Мой опыт отрицает это: если у вас есть более 20 событий - отладка становится сложной, и рефакторинг - потому что очень трудно понять: кто, когда и почему что использует.

Обещания (я кодирую в Javascript) намного уродливее и тупее, чем События. Но: вы можете четко видеть связи между вызовами функций, поэтому логика приложения становится более понятной. Чего я боюсь тем не менее, это обещания принесут больше жесткой связи с ними ...

PS: ответ не должен быть основан на JS, опыт других функциональных языков приветствуется.

C69
источник
2
Часто говорят, что события (паб / саб, посредник) допускают слабую связь, кто, черт возьми, это говорит? хватит их слушать! Вы не можете подписаться на событие, не зная родителей -> тесная связь. Посмотрите на слабые события (= Посредник?).
Луи Коттманн
@Baboon Я в целом согласен с тем, что события автоматически не создают слабой связи, но если вы представите шину событий, вы можете подписаться на события, не зная «родителя». Кто это говорит? Рэй Райан о Google IO 2009, см. Google.com/events/io/2009/sessions/… в 13:50.
шарфридж
@scarfridge Да, если вы внедрите какой-нибудь Eventaggregator, он потеряет связь, как я сказал в своем комментарии.
Луи Коттманн
.net rx Является агрегатором событий, я на мобильном телефоне, позже
опубликую

Ответы:

1

Монады и события прекрасно играют вместе, например, взгляните на .NET Rx. Я думаю, что должна быть даже реализация JavaScript. http://msdn.microsoft.com/en-us/data/gg577609.aspx

AndreasScheinert
источник
извините за задержку принять. «какая-то глупость от Microsoft» действительно потрясающая. И теперь, после того как Reactive Extensions были получены из открытых источников, они стали еще более жизнеспособными. Спасибо за ответ (хотя, возможно, вы захотите немного его расширить;)).
c69
Это зависит от того, что вы ищете: какое-нибудь введение или конкретные примеры. В любом случае я могу порекомендовать вам посмотреть видео на канале 9 и выступления Эрика Мейера и Брайана Бекмана на эту тему.
AndreasScheinert