javascript - 继续发送字符串而不破坏此 NPM 库的更改
问题描述
一点背景故事:
我们正在尝试解决我们拥有的本地库上的错误。
我试图说服高级开发人员在使用以下单词时更改命名约定:
启用禁用隐藏取消隐藏
因为他们正在使用
启用禁用隐藏取消删除
我们讨论了这是一个重大变化的事实,它将阻止其他产品工作。
因此,讨论了在不取消取消删除的情况下添加取消隐藏,以便它不会破坏任何内容,并且在此过程中,如果用户使用取消隐藏或取消删除,理论上他们仍然应该这样做。
现在编程问题来了:
这是我的功能:
toggleAction(data._id, 'undelete', (err, data) => { // cool stuff }, false)
如何继续传递字符串(不转换为数组或对象)但也开始传递 2 个值,以便必须在此文件中进行更改,而不是在项目端验证等中进行更改。
另一件事,如果 switch case 没有找到字符串,这个函数将默认。
还考虑过同时发送两个请求,但这只是糟糕的编程。
另外,虽然可以回退到具有其他命名的另一个请求,但由于 switch case 如果不在选项中仍将默认,因此它不会抛出错误以实际执行下一个函数的回调。
你们认为什么是简单但能够破坏很多事情的正确方法。
提前致谢。
解决方案
有点基于意见,但恕我直言,这是错误的方法。我会将取消删除一词更改为仅在呈现的网站上取消隐藏,并以相同的方式保持内部 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)隐藏的反义词通常是“显示”,而不是取消隐藏。
推荐阅读
- angular - 它成为分组日而不是月
- python - django访问urls.py的顺序是什么
- angular - Angular 材质样式问题
- node.js - 如何在上传文件之前先验证表单数据?
- node.js - 在 Node JS 中创建条件辅助函数
- python - 如何从中提取文本
标签?
- reactjs - 创建反应应用程序与自定义 Webpack 配置,用于将反应应用程序发布到 npm 存储库
- neo4j - 图形建模布尔值 - 关系属性或节点属性或根本没有?
- graphics - 用于向矩形画线但在矩形之前终止的算法
- single-sign-on - simplesamlphp - 页面不断重定向而不是登录