Backbone.js事件处理程序命名的最佳实践

Nic*_*ima 17 javascript events naming-conventions backbone.js

假设我在视图中有一个函数,当某种状态发生变化时会触发该函数.什么是最好的名字,为什么?

  • stateChange
  • stateChanged
  • onStateChange
  • onStateChanged

Eug*_*nov 14

我个人倾向于使用onEventName保持DOM事件处理程序的本机命名约定的名称.

就像myElement.onclick = function() { /* ... */ }click事件.

所以myEvent我正在使用名为的处理程序onMyEvent.

如果我有事件stateChange,那么我将使用onStateChange处理程序.

但实际上这个问题对于每个开发团队和团队/公司内部的代码风格约定更为具体.

因此,这类问题的主要目标是在所有部分保持代码样式相同,以确保可读性.

因此,如果您在团队中工作,只需保持团队代码编写惯例的粘性,如果您单独使用现有代码,请尝试保持其代码样式(确定该样式是否显然不是很难看).

更新:理解.

活动是什么?粗略地说,这是在程序外部或内部启动的操作,换句话说,系统中发生了某些事情,例如某些状态更改(键盘,鼠标,I/O设备的状态等)与用户点击的方式无关在鼠标或某些程序上发送鼠标点击信号给系统).

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

让我们假设我们的处理程序命名为onClicked.由于处理程序的名称以过去时态说出,我们可以得到一个合理的问题:"点击时,它发生了多长时间?点击了多少次?嗯,也许根本不能处理这个动作(或行动?). ..".所以这个名字告诉我们过去发生的事情.

相反,当我们的处理程序命名为onClick显然该click事件刚刚被触发并触发一次,我们立即收到通知.而且我们要处理单击事件 -信息说我们,鼠标的状态改变现在(不是鼠标点击,但点击的事件).

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


San*_*rez 8

onStateChanged 因为只要某种状态发生变化,该函数就会触发.


Sha*_*ley 6

我用Google搜索了几个名字,并注明了返回的结果数量.您可以获得一些事件处理程序最常见表单相对受欢迎程度的指示:

stateChanged 168k
stateChange 81k [1] 
handleStateChange 61k
onStateChange 59k 
onStateChanged 12k 
beforeStateChange 2k
Run Code Online (Sandbox Code Playgroud)

[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
Run Code Online (Sandbox Code Playgroud)

[2]与编程无关的太多结果.

[3]显然,某些Microsoft API可以预测用户何时点击.