本周两次,我读到人们写了一个事件(.net)被“抛出”。我一直认为与事件一起使用的动词是“fire”或“raise”。我认为“抛出”用于异常,但不是事件(“raise”可用于任何一种)。
是否有其他人发现“抛出”事件令人困惑?
本周两次,我读到人们写了一个事件(.net)被“抛出”。我一直认为与事件一起使用的动词是“fire”或“raise”。我认为“抛出”用于异常,但不是事件(“raise”可用于任何一种)。
是否有其他人发现“抛出”事件令人困惑?
我同意,事件被引发/触发/触发。如果有任何东西被抛出,那就是例外。
MSDN 库中的标准约定似乎是指Raising an Event and Throwing an Exception。
另一个术语是“调用”。由于事件是委托,它们被调用来调用它们,但是是的,一般术语是“解雇”或“引发”。
此外,在这种情况下使用“throw”这个词是令人困惑的,因为它会与“throw”关键字混淆。不能使用 throw 关键字抛出事件。
Raise 是 MSDN 文档中最常见的动词。
我同意 - 如果我听说有东西被抛出,我认为这是一个例外。C# 语言使这一点非常明确 - throw 是用于异常的保留字。
尽管有可能throw
不是例外的事情,但很明显,这throw
仅适用于例外情况。Raise确实是您用来表示事件已经发生的术语。
不,它们不能被扔掉,但就像矮人和霍比特人一样,它们可以被扔掉。
我认为可以抛出事件,但如果你真的这样做,那就是不称职的编码。
让我解释。在 C++ 中,您可以抛出任何类型。你可以抛出布尔值。你可以扔enum error_type
。你可以扔std::exception
。当然你也可以扔struct XEvent
.
但是如果你真的做了,你很可能正在做一些非常错误或非常混乱(因此是错误的)的事情。
我完全赞成不要重载单词的含义,以避免歧义(不需要存在的地方)。
我认为“抛出”通常被理解为暗示调用堆栈展开(因为当你有一个定义明确的堆栈时,但我认为它可以扩展到一个无界入度的单链表;也就是说,一个父指针树)。让我们坚持下去。
“raise”一词也用于信号。如果也可以避免将其用于事件,那就太好了。
我更喜欢在事件发生时“触发”(“onMouseOver 事件刚刚触发”),并且可能在事件侦听器通知消费者时“被触发”(“XMouseMotionNotify 事件被发送给客户端”)。
您通常会听到人们提到被解雇或引发的事件。但在我看来,投掷完全没问题。关键是他们是否说事件被抛出。
不要试图分裂成许多头发。我们的职业已经足够复杂,有成千上万种技术,更不用说考虑我们沟通方式的细微差别了。
我会说你发布一个事件。