gpt4 book ai didi

javascript - 为事件创建自己的对象以在代码完成中获取它的优点/缺点是什么?

转载 作者:行者123 更新时间:2023-11-29 21:54:31 24 4
gpt4 key购买 nike

在 nodejs 应用程序中,我们有许多事件将被发出和捕获。事件通常被定义为像 e 这样的简单字符串。 G。 '打开'。我的想法是为我的事件创建一个自己的对象。

var event = {
open: 'my-open',
close: 'my-close'
};
module.exports = event;

想要的好处是:

  • 定义所有事件定义的位置
  • IDE 中的代码完成(例如 IntelliJ)

我的问题是,这是否是个好主意,或者是否有重大理由不这样做?

更新
我们决定只在模块中使用这样的事件对象。
好处是:

  • 指定事件地点
  • 组织事件的可能性
  • 在一个地方重命名事件
  • IDE 支持(代码完成、查找引用)

最佳答案

我对此有点两面性:

  • 一方面,我可以看到明显的好处,例如使用具有自动完成功能的 IDE 时。此外,您还有一个优势,可以在一个地方定义您的事件。此外,这意味着当例如你发出一个事件,你可以清楚地区分你的自定义事件和 Node.js 自己的事件,只需查看代码。它们是不同类型的事件,只是看起来不同而已。

  • 另一方面,我认为这会使事情过于复杂。本质上,Node.js 中的事件只是一个字符串。您的建议依赖于对象属性的名称,这些名称最终也是字符串。没有编译器支持这个,因为没有编译器。因此,无论您输错了实际事件名称还是输错了事件包装属性的名称,都没有关系。

换句话说:如果您不使用 IDE,那将毫无用处。相反,它会强制您在一个地方收集所有可能的事件名称,这将使维护事件变得困难。想一想长时间内发生的大量事件:哪些事件可以安全地删除而不会在完全不同的地方(甚至可能在不同的模块中)破坏代码?或者,由于事件名称甚至可能在其他模块中使用,您必须搜索所有模块。在这种情况下,我也可以只搜索一个字符串。

如果我比较 yield 与风险,我可能会将事件名称作为简单的字符串,就像在 Node.js 本身中一样。

最后,还有一件事我要注意:有时需要通过在运行时构建事件名称字符串来动态创建事件名称。一旦你有了这样的东西,你就会以两种不同的方式发出你的自定义事件,这打破了你拥有一种一致的事件方式的规则……所以,如果我考虑到这一点,我会更加谨慎。

而且,(现在真的)最后,最后一件事:引入这样的对象不会改进您的代码。它提高了与 IDE 的兼容性。我怀疑这是否是一个解决方案,我宁愿将其视为一种解决方法。

关于javascript - 为事件创建自己的对象以在代码完成中获取它的优点/缺点是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27153530/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com