为什么使用'handler'为事件处理程序添加后缀?为什么不用'句柄'作为前缀?

时间:2009-08-11 17:34:40

标签: naming-conventions

我注意到使用'handler'后缀事件处理程序是常见的(至少在ECMAScript中):clickHandlerfooBarHandler等...但我一直认为它更有意义用“句柄”作为前缀:handleClickhandleFooBar

使用前缀表示法,方法更容易进行可视化解析(很容易区分处理程序和其他内容),更快地找到(或忽略)编辑器的文本完成,并且它们遵循方法应该是动词的约定(handleClick是动词,clickHandler是名词)。

那么,为什么后缀符号是常见的?是否有一些我没有注意到的隐藏的好处?

7 个答案:

答案 0 :(得分:3)

没关系。做你喜欢的事,并与你的同事进行宗教辩论。

答案 1 :(得分:2)

谁知道肯定,但我猜这是因为他们被称为事件处理程序,遵循该模式是有道理的。

如同,eventHandler

答案 2 :(得分:2)

我建议一个原因是避免与handles混淆,而维基百科称之为“一种特殊的智能指针”。处理程序非常不同。它可能不是命名方法中的一个问题 - 显然不是任何类型的指针 - 而是命名存储方法引用的内部变量。

答案 3 :(得分:2)

传统的Flash命名约定使用“on”作为前缀而不是“Handler”作为后缀。有些人更喜欢动词方法名称,有些人更喜欢名词方法名称。名称onMouseClick更像是一个副词,mouseClickHandler是一个名词,听起来像一个类名,而handleMouseClick是一个动词。

我通常使用“Handler”后缀来跟随Adobe Flex coding conventions,但“on”前缀要短得多,并且具有(已经提到的)排序的好处。如果您在Flex Builder中按Ctrl-O,它将弹出一个快捷菜单,只需键入“on”即可显示文件中的每个处理程序。

答案 4 :(得分:1)

对我来说,后缀语法(ClickHandler)看起来更自然。它不会干扰文本完成,因为您通常会搜索操作(如在ClickHandler中)而不是搜索支持哪个处理程序。注意到这一点,Visual Studio 2010也支持后缀文本完成。

答案 5 :(得分:1)

处理声音更为迫切 - 就像它是你专门打电话做某事的功能一样。处理程序更加异步,超出了程序的直接流程。

答案 6 :(得分:1)

术语“句柄”已经具有作为用于间接引用某种特定数据结构的不透明指针/值的含义。它在面向对象的代码中用于通过一组库函数间接地与数据结构交互。句柄的一个很好的例子是C语言FILE *类型,它实际上只是x86上的枚举整数值。

因此,在其他地方看到它有点烦人。这可能就是全部。