首页 > 解决方案 > 继续发送字符串而不破坏此 NPM 库的更改

问题描述

一点背景故事:

我们正在尝试解决我们拥有的本地库上的错误。

我试图说服高级开发人员在使用以下单词时更改命名约定:

启用禁用隐藏取消隐藏

因为他们正在使用

启用禁用隐藏取消删除

我们讨论了这是一个重大变化的事实,它将阻止其他产品工作。

因此,讨论了在不取消取消删除的情况下添加取消隐藏,以便它不会破坏任何内容,并且在此过程中,如果用户使用取消隐藏或取消删除,理论上他们仍然应该这样做。

现在编程问题来了:

这是我的功能:

toggleAction(data._id, 'undelete', (err, data) => { // cool stuff }, false)

如何继续传递字符串(不转换为数组或对象)但也开始传递 2 个值,以便必须在此文件中进行更改,而不是在项目端验证等中进行更改。

另一件事,如果 switch case 没有找到字符串,这个函数将默认。

还考虑过同时发送两个请求,但这只是糟糕的编程。

另外,虽然可以回退到具有其他命名的另一个请求,但由于 switch case 如果不在选项中仍将默认,因此它不会抛出错误以实际执行下一个函数的回调。

你们认为什么是简单但能够破坏很多事情的正确方法。

提前致谢。

标签: javascriptstring

解决方案


有点基于意见,但恕我直言,这是错误的方法。我会将取消删除一词更改为仅在呈现的网站上取消隐藏,并以相同的方式保持内部 API,直到高级开发人员可以修复重大更改。因此用户会在他们的屏幕上看到“取消隐藏”一词,但 API 仍将保持“取消删除”。

在更复杂的应用程序中,您将使用枚举列表,以便您可以根据需要多次更改标签:

const enum_options = [
  'enable',
  'disable',
  'hide',
  'show'
];
// 3 is the index of the word 'show'
toggleAction(data._id, 3, (err, data) => { // cool stuff }, false)

这样,当您将标签更改为您想要的任何单词时,API 就不必更改。如果您必须支持多种语言,这也会有很大帮助。

ps:

1) 如果这是一个重大更改,则使用的架构存在问题。修复问题,而不是添加更脆弱的代码。如果整个应用程序现在到处都写着“取消删除”这个词,那么切换到喜欢使用字符串“取消删除-取消隐藏”仍然需要大量的 api 更改。

2)隐藏的反义词通常是“显示”,而不是取消隐藏。


推荐阅读