Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
делегаты
|
|||
|---|---|---|---|
|
#18+
skyANAНу да. А сейчас что не так? Где хардкод? Есть реализация, что одинакого работает и в Win, и в Web клиенте. Нет необходимости писать две различные реализации. тогда зачем делегат? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 15:01 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
hVosttskyANAНу да. А сейчас что не так? Где хардкод? Есть реализация, что одинакого работает и в Win, и в Web клиенте. Нет необходимости писать две различные реализации. тогда зачем делегат?Эххх... Плохо пример написал. Некий класс следит за активностью пользователя, обсёрвит различные события, запоминает время последней активности (в памяти, в сессии, в базе, не важно). Пользователя вдруг дёргают (допустим это врач, его вызывают на операцию). Врач уходит. Через 15 минут в кабинет заходит любопытная уборщица и лезет смотреть, что же там делал врач. Класс ловит событие активности, проверяет, что превышено максимальное время бездействия и говорит: стопэ, чтобы дальше продолжить, нужно подтвердить себя. Сам он ясен пень не может чистить куки, редиректить на страницу логина, открывать диалоги. Он делегирует это. Если вызывающая сторона не предоставляет реализацию запроса подтверждения, то дальнейшая активность тупо пресекается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 15:14 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
skyANA, можно еще такой финт предложить,( что бы тех и тех успокоить) Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 15:56 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
Где-то в степи, дак Action жеж делегат :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 15:59 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
skyANA, ну а че, добавили указатель, или по месту, и вперед делегаты депутаты ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 16:21 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
skyANAОн делегирует это Это логика, которая легко покрывается с помощью DI. Я не понимаю, нахрена тебе делегаты? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 16:30 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
МСУskyANAОн делегирует это Это логика, которая легко покрывается с помощью DI. Я не понимаю, нахрена тебе делегаты? :)Если легко, то покажи мне код. Ну или опиши словами что-ли, что и куда ты собрался инжектить. P.S.: а логика реализована 6 лет назад, и прекрасно работает. Я просто вспонил о ней, прочитав вопрос ТС. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 16:37 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
skyANA, я так и не понял, ты делегат где определяешь? и почему нельзя обойтись обычным методом класса? зачем мудрить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 16:41 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
hVosttskyANA, я так и не понял, ты делегат где определяешь? и почему нельзя обойтись обычным методом класса? зачем мудрить?Класс следит за активностью сессии пользователя. В какой-то момент он наблюдает ситуацию, что между текущим и предыдущим действием прошло больше положенного времени и блокирует дальнейшие действия, пока пользователь не подтвердит, что это именно он. Причём нам не интересно как пользователь будет подтверждать то, что это именно он. Будет ему показан диалог, или его пошлют на страницу логина. Это поведение делегируется! Не, ну можно кинуть исключение, что вызывающий код либо обработает, либо нет. Или событие, на которое вызывающий код либо подпишется, либо нет. Но что значит обойтись обычным методом класса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 18:28 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
skyANA, ок. но в данном случае не интересно чем занимается класс. важно кто и когда определяет делегат у инстанса твоего класса? skyANAЭто поведение делегируется! вот кем, чем и когда делегируется? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 18:44 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
hVosttskyANA, ок. но в данном случае не интересно чем занимается класс. важно кто и когда определяет делегат у инстанса твоего класса? skyANAЭто поведение делегируется! вот кем, чем и когда делегируется?А вот это уже зависит от конкретного клиента и спокойно может разруливаться на уровне IoC контроллера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 18:48 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
skyANA, так об этом и речь. кстати, почему не event-событие? а делегат? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 18:58 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
hVosttтак об этом и речь.Разверни мысль. hVosttкстати, почему не event-событие? а делегат?1. Обработчики событий — это нe что иное, как методы, вызываемые с помощью делегатов. Это кстати по твоей же ссылке и написано; 2. В конкретном клиенте один способ подтвердить пароль: один диалог подтверждения пароля, одна страничка, - и события тут на фиг не нужны. Плюс мы исключаем возможность того, что на событие подпишутся несколько раз и пользователя попросят подтвердить себя подряд несколько раз, да ещё вдруг разными способами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 19:28 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
skyANAРазверни мысль. да хотя бы даже так: Код: c# 1. 2. 3. а делегат — это костыль. оно вообще изначально для событий было изобретено. поведение реализуется либо с помощью ООП, либо на уровне интерфейсов. использовать делегаты для решения таких задач — грубо, не профессионально и прошлый век вообще. с делегатом в числе свойств/полей класса получается лапша-доширак в коде. все перемешалось. и мухи, и котлеты. после адекватного ревью, такой кусок кода должен был бы помечен, как "WTF, убрать ево нафих!" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 19:52 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
hVosttskyANAРазверни мысль. да хотя бы даже так: Код: c# 1. 2. 3. а делегат — это костыль. оно вообще изначально для событий было изобретено. поведение реализуется либо с помощью ООП, либо на уровне интерфейсов. использовать делегаты для решения таких задач — грубо, не профессионально и прошлый век вообще. с делегатом в числе свойств/полей класса получается лапша-доширак в коде. все перемешалось. и мухи, и котлеты. после адекватного ревью, такой кусок кода должен был бы помечен, как "WTF, убрать ево нафих!" А конструктивные аргументы будут? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 20:10 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
skyANA, куда уж конструктивнее, всё четко по делу :) Архитектура на делегатах просто убийственна. Посмотри фильм Бомж с дробовиком. Тот случай, зуб даю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 20:14 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
МСУskyANA, куда уж конструктивнее, всё четко по делу :) Архитектура на делегатах просто убийственна. Посмотри фильм Бомж с дробовиком. Тот случай, зуб даю.Минусы какие? Какие проблемы могут возникнуть при таком подходе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 20:15 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
skyANAМСУskyANA, куда уж конструктивнее, всё четко по делу :) Архитектура на делегатах просто убийственна. Посмотри фильм Бомж с дробовиком. Тот случай, зуб даю.Минусы какие? Какие проблемы могут возникнуть при таком подходе? Никакой инверсии, прибивание реализаций гвоздями к забору. Делегатный хаос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 22:35 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
МСУskyANAпропущено... Минусы какие? Какие проблемы могут возникнуть при таком подходе? Никакой инверсии, прибивание реализаций гвоздями к забору. Делегатный хаос.Что такое "прибивание реализаций гвоздями к забору"? А про делегатный хаос можно поподробнее, а то я с таким ещё не сталкивался? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 22:45 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
skyANA, проблема №1. удерживание контекста. вам надо где-то сделать Код: c# 1. если на объект someClassInstance потеряется ссылка, то будет Жопа получив же экземпляр интерфейса мы точно знаем, что объект по ссылке будет жить до последнего вздоха хранителя ссылки, если это не WeakReference конечно проблема №2. размазывание логики. может быть ты не знал, что по логике в свойствах и полях класса хранятся объекты, а не методы. не надо путать C# с JavaScript (где такой подход не только уместен, он жизненно необходим). существует небольшой ряд исключений из правил, например спецификации, где однако задача достаточно чётко обозначена и это обосновано. в основном делегаты — события и функциональщина в чистом виде. т.е. жизнь делегата должна быть коротка, очень коротка.., либо жестко кем-то управляема (event). проблема №3. гвозди. что будет, если делегату надо будет хранить еще какое-то состояние. самый банальный пример в контексте задачи: период проверки, кеш, еще что-то. кто знает? с делегатом нам придётся из самой реализации делегата что-то там дергать через что-то ещё. и это кривые ржавые торчащие гвозди. короче ад. проблема №4. избыточность. перед вызовом делегата, надо проверить его на null. или... а что делать если null? здравствуй здравствуй неочевидная логика! )) делегат надо где-то установить. значит кто-то этим должен заняться, типо кого-то озадачить лишней ответственностью — определение делегата. и это будет хардкод в чистом виде. и никак не получится от этого абстрагироваться, как в случае с интерфейсом. -------------- всё это не значит, что делегаты нельзя использовать неправильно. очевидно, это будет просто плохой код. но далеко не всех это беспокоит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 23:40 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
ошибочка... Код: c# 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 23:43 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
hVosttвсё это не значит, что делегаты нельзя использовать неправильно. очевидно, это будет просто плохой код. но далеко не всех это беспокоит Меня это действительно не беспокоит. Код 2006 года и с ним нет никаких проблем. Я о нём после пятой кружки Guinness вспомнил По поводу п.3: не понял, зачем ты выдумал какой-то период проверки и прочее в контексте задачи? По какому принципу происходит проверка никак не связана с делегатом. По поводу п.4: если null, то очевидно, что мы не прошли проверку. Ровно также, если исключение не обработано, или экземпляр IUserClassifier не определён. С п.1 соглашусь, хотя сложно представить себе эту ситуацию. По поводу п.2: честно не понял, о каком размазывании логики ты говоришь. Зато вспомнил BlToolkit, у них там есть место, где они используют делегаты в качестве статических свойств класса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 00:41 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
skyANAвспомнил BlToolkit, у них там есть место, где они используют делегаты в качестве статических свойств класса.И не только статических... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 00:50 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
skyANA, BlToolkit - это что, хороший пример? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 01:03 |
|
||
|
|

start [/forum/search_topic.php?author=walera&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
5ms |
get forum list: |
9ms |
get settings: |
5ms |
get forum list: |
9ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
26ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 678ms |
| total: | 780ms |

| 0 / 0 |
