为什么修补全局变量是有害的

主要观点:修补全局变量是很多工程师易误解的话题,虽有便捷性但危害大,应避免。以 React、Next.js、Bun 为例,它们曾引入基于修补全局变量的功能,引发社区强烈反对。
关键信息

  • 修补全局变量即修改非自身拥有的代码行为,如 Next.js 扩展fetch函数,React 也对其进行修补。
  • 修补全局变量虽看似便捷,如方便添加功能,但有诸多危害,如维护困难、降低可预测性、影响学习体验、导致锁定以及阻碍进步等。
  • 列举了 MooTools 因修补全局变量导致语言规范受限的例子,强调其危害。
    重要细节
  • 在 Next.js 的新缓存 API中,团队通过扩展fetch函数提供特定功能,引发关注。
  • 如在 Next.js 中,fetch('https://kettanaito.com', { next: { revalidate: 10 }})可缓存和重新验证请求,但在其他框架中行为可能不同。
  • 以 MSW 为例,说明不良 API 未起到教育作用,而好的 API 应能教授概念。
  • Bun 的proxy功能虽便捷但未遵循规范,存在锁定问题。
  • 提出替代方案,如使功能显式化,以 Bun 的proxy为例,将其从fetch中分离,避免混淆和问题。
  • 列举了常见的反对意见及反驳,如认为没人在乎、是更好的开发者体验等,并以 React 和 Next.js 为例说明它们正逐渐远离修补fetch

总之,应认识到修补全局变量的危害,避免采用这种做法,寻求更好的替代方案。

阅读 11
0 条评论