Events 事件处理程序是否应该直接响应事件?

Events 事件处理程序是否应该直接响应事件?,events,node.js,socket.io,Events,Node.js,Socket.io,我有一个socket.io服务器监听sockets上的某些事件。每当触发事件时,它都会将事件数据传递给事件处理程序。我的问题是,事件处理程序是否应该引用服务器,并像这样直接响应事件 eventHandler.handle = function(event){ myServerReference.emit(event, etc); } 或者,当事件处理程序有数据要发送时,它是否应该触发事件,并且服务器应该侦听该事件并按如下方式处理数据发送: eventHandler.onResponse(fun

我有一个socket.io服务器监听sockets上的某些事件。每当触发事件时,它都会将事件数据传递给事件处理程序。我的问题是,事件处理程序是否应该引用服务器,并像这样直接响应事件

eventHandler.handle = function(event){
myServerReference.emit(event, etc);
}
或者,当事件处理程序有数据要发送时,它是否应该触发事件,并且服务器应该侦听该事件并按如下方式处理数据发送:

eventHandler.onResponse(function(data){ server.emit(data); }
从长远来看,哪种方法更好?有更好的设计方法吗?

简短的回答是“视情况而定”,一个好的OO实践是记住以下“S”:

在面向对象编程中,声明每个类都应该有一个单独的职责,并且该职责应该完全由类封装。它的所有服务都应该与这一责任紧密结合

如果事件处理程序所在的代码单元做得太多(即,做其他人的工作),则应该将该功能移到其他地方