Handle != Handler

最近的工作邮箱里寄来一封这样的邮件,觉得很有益,而且不牵涉秘密。所以处理一下翻译成中文贴在这里作为一个笔记与大家互相学习吧。

====

Handle 和 handler 混用的错误在国内程序员当中非常普遍。这不是什么大的问题,但是对于以英语为母语的人来说,如果这两个词被混用就很容易傻傻找不到北。虽然说这么多年下来我们多少也习惯了。

在一个标准的程序中,handle 和 handler 是有很大区别的。

Handle 的用法:
· Handle 是一个对象,指针或者引用;
· Handle 是一个单数名词(或者说是一个名字)。

例如,我可以用一个 handle 来作为文件指针的名字:

FILE* myFileHandle = fopen(...);

与之相对的,Handler 则通常是一个函数或者过程,用来对对象和事件进行处理。

Handler 的用法:
· Handler 是需要由一段代码来实现的;
· Handler 是对事件,对象,中断和 Handle 的处理和响应。

也就是说,Handler 通常是这样的:
void MyInterruptHandler(...)
{
// do work to handle the interrupt
}

但是有人会说,为什么上面代码中的注释说的是”do work to handle”,而不是”do work to handler”呢?事实上,这就跟 handle 的第二个意思有关了。Handle 也可以作为一个动词,用来作用在一个引用或对象上。在上面的代码中,我们就”handle”了一个中断,意思就是我们“处理”了一个中断。

这样一来,其实”MyInterruptHandler”函数也可以改名成:
void HandleMyInterrupt(...)
{
// do work to handle the interrupt
}

这样书写的话对我们来说就没有什么困扰了。当然,通常来说我们更喜欢用”MyInterruptHandler”而不是”HandleMyInterrupt”。

以下提供一些字典上对于 handle 和 handler 的解释:

han·dle
noun
· a part of a thing made specifically to be grasped or held by the hand.
verb (vt.)
· to touch, pick up, carry, or feel with the hand or hands; use the hands on; take hold of.

han·dler
noun
· a person or thing that handles.

鱼尾Swing

国内某理工学校电子类专业85后。热爱PS,热爱WEB,对各种技术都好奇。平时看看动画,听听音乐,做爱做的事。作为工坊的工头,负责工坊的维护,操劳各种苦力工作。

More Posts - Website

Follow Me:
Twitter

Leave a Reply