Backbone.js事件处理程序命名的最佳做法

at0kjp5o  于 2022-12-23  发布在  其他
关注(0)|答案(6)|浏览(182)

假设我在一个视图中有一个函数,当某种状态改变时会触发它,那么它的名称最好是什么?为什么?

  • 状态更改
  • 状态已更改
  • 关于状态更改
  • 关于状态更改
mspsb9vt

mspsb9vt1#

我个人更喜欢使用**onEventName名称,以保持DOM事件处理程序的本地命名约定。
就像myElement.onclick = function() { /* ... */ }对应click事件一样。
因此,对于
myEvent,我使用名为onMyEvent的处理程序。
如果我有事件
stateChange,那么我将使用onStateChange处理程序。
但实际上,这个问题对于每个开发人员团队和团队/公司内部的
代码风格约定**来说更为具体。
因此,这类问题的主要目标是保持代码风格在所有部分相同,以确保可读性。
因此,如果你在一个团队中工作,只要坚持团队的代码编写惯例,如果你独自工作在现有的代码上,尽量保持它的代码风格(如果这种风格不是很明显的丑陋)。

最新情况:了解。
**事件是什么?**粗略地说,它是在程序外部或内部发起的一个操作,换句话说,系统中发生了一些事情,例如,一些状态变化(键盘、鼠标、I/O设备等的状态),无论如何(用户点击鼠标或某个程序向系统发送鼠标点击信号)。

假设浏览器窗口被订阅以获取关于某些事件的通知,并且操作系统尽快地将这些通知发送给它,我们将假设在某些事件发生的同时,因此如果用户在浏览器窗口处于活动状态并且文档具有焦点时单击鼠标,浏览器告诉文档触发click事件。这里我们的onclick处理程序开始调用。换句话说,系统告诉我们现在发生了一些状态的改变,我们正在处理这个改变,而不是处理告诉我们状态已经改变的事实。

让我们假设处理程序名为onClicked由于处理程序的名称使用过去时,我们可以得到一个合理的问题:“单击时,它发生在多长时间之前?它被单击了多少次?嗯,可能根本来不及处理此操作(或多个操作?)......"。因此,此名称告诉我们过去某个时间发生了某件事。
相反,当我们的处理程序被命名为onClick时,很明显click事件只触发了一次,我们立即得到了通知。我们将处理*******click事件-告诉我们鼠标的状态现在发生了变化(不是鼠标
单击了
,而是click事件)。

因此,过去时态的名称更适合于我们需要检查某个状态是否已经改变的情况。例如,如果变量存储了state = 1,我们可以调用函数**isStateChanged();**,它将比较state变量中的值与当前时刻的真实的值。在这里,过去时态是一个很好的命名选择。

qltillow

qltillow2#

onStateChanged,因为每当某种状态发生更改时,就会触发此函数。

rsaldnfx

rsaldnfx3#

我在Google上搜索了几个名字,并记下了返回结果的数量。您可以得到一些关于事件处理程序的最常见形式的相对流行度的指示:

stateChanged 168k
stateChange 81k [1] 
handleStateChange 61k
onStateChange 59k 
onStateChanged 12k 
beforeStateChange 2k

[1]结果显示stateChange主要用作事件的名称,而不是处理程序的名称。
对于onStateChange表单,使用不同的事件类型会给出更强的建议:

change [2]
onChange 2000k
onChanged 85k
handleChange 36k
beforeChange 27k
afterChange 22k

click [2]
onClick 48000k
onClicked 58k
handleClick 50k
beforeClick 8k [3]

onDrag 100k
handleDrag 36k
beforeDrag 32k
afterDrag 4k
onDragged 5k

[2]与编程无关的结果过多。
[3]显然,某些Microsoft API可以预测用户何时会点击。

pbossiut

pbossiut4#

我的赌注是stateChanged到期日:

  • stateChange看起来像是一个订单,并且看起来像是接收了一个带有 new state 的参数。
  • onStateChangeonStateChanged是用于存储处理程序的更多键,而不是处理程序本身的名称。

恕我直言

4smxwvx5

4smxwvx55#

我通常使用双因素事件名称。随着应用规模的增长,您可能会有多个对象的状态发生变化,或者可能有一个控制器可以广播多个对象的变化事件,因此希望能够在代码和您的头脑中区分它们:

Object1:event
Object2:event

至于用哪个活动名称,我认为这归结为个人喜好和一致性。

9rbhqvlz

9rbhqvlz6#

我认为应该根据动作发生的实际时刻来做出改变。对我来说,onStateChange意味着动作正在发生变化,从技术上讲,我可以在变化之前得到通知。OnStateChanged意味着动作已经发生,我在动作结束时得到通知。
因此,onStateChange和onStateChanged在意图上有很大的不同,前者说“为这个变化做好准备”,而后者说“它已经发生了”。
编辑:我被这个意图冲昏了头脑,没有意识到命名本身。为什么要用on前缀?这是为处理程序保留的。处理程序会做一些与(on)该事件相关的事情。所以我会用stateChange和stateChanged。

相关问题