Терминология - можно ли «выбросить» события? - PullRequest
6 голосов
/ 16 марта 2009

Дважды на этой неделе я читал, что люди пишут, что событие (.net) было "выброшено". Я всегда думал, что глагол для употребления с событиями - это «огонь» или «поднять». Я думал, что «бросок» использовался для исключений, но не для событий («рейз» может использоваться для любого из них).

Кто-нибудь еще находит сбивающим с толку события, которые "выбрасываются"?

Ответы [ 9 ]

18 голосов
/ 16 марта 2009

Согласен, события инициированы / запущены / запущены. Если что-то выброшено, это исключения.

7 голосов
/ 16 марта 2009

Стандартное соглашение в библиотеке MSDN, по-видимому, относится к Создание события и Вызов исключения .

5 голосов
/ 16 марта 2009

Еще один термин - «вызванный». Поскольку события являются delgates, они вызываются для их вызова, но да, общий термин «инициируется» или «возбуждается».

Кроме того, использование слова «throw» в этом контексте сбивает с толку, потому что оно будет перепутано с ключевым словом «throw». Вы не можете бросить событие с ключевым словом throw.

3 голосов
/ 16 марта 2009

Нет, их нельзя бросить, но, подобно гномам и хоббитам, их можно бросить.

3 голосов
/ 16 марта 2009

Хотя возможно throw вещей, которые не являются исключениями, совершенно очевидно, что throw предназначен только для использования с исключениями. Повышение - это действительно термин, который вы использовали бы для обозначения того, что событие произошло.

3 голосов
/ 16 марта 2009

Поднять - это глагол, который, как представляется, наиболее часто встречается в документах MSDN.

Я согласен - если я слышу, что что-то было брошено, я предполагаю, что это исключение. Язык C # делает это очень явным - throw - зарезервированное слово, используемое с исключениями.

2 голосов
/ 27 мая 2009

Я думаю, что события могут быть выброшены, но это некомпетентное кодирование, если вы действительно это делаете.

Позвольте мне объяснить. В C ++ вы можете бросить любой тип. Вы можете бросить логические значения. Вы можете бросить enum error_type. Вы можете бросить std::exception. И конечно вы можете бросить struct XEvent.

Но вы, скорее всего, делаете что-то либо ужасно неправильное, либо ужасно запутывающее (и, следовательно, неправильное), если вы действительно это делаете.

Я за то, чтобы не перегружать значения слов, чтобы избежать двусмысленности (там, где это не должно существовать).

Я думаю, что «throw» обычно понимается как разматывание стека вызовов (для случая, когда у вас есть четко определенный стек, но я думаю, что он может быть расширен до односвязного списка неограниченной степени; то есть дерева). родительских указателей). Давайте придерживаться этого.

Слово «рейз» используется и для сигналов. Было бы неплохо, если бы можно было избежать использования этого и для событий.

Я предпочитаю «срабатывать», когда происходит событие («событие onMouseOver только что сработало»), и, возможно, «было сигнализировано», когда прослушиватель событий уведомляет потребителя («событие XMouseMotionNotify было сигнализировано клиенту»).

1 голос
/ 16 марта 2009

Я бы сказал, что вы опубликуете событие.

1 голос
/ 16 марта 2009

Обычно вы слышите, как люди ссылаются на события, которые были инициированы или вызваны. Но брошенный отлично, на мой взгляд. Ключ, если они говорят, что событие было брошено.

Не пытайтесь разделить на много волосков. Наша профессия достаточно сложна с тысячами технологий, не говоря уже о том, чтобы думать о крошечных нюансах нашего общения.

...