在JavaScript中的嵌套对象上执行Semver,主要、次要或修补程序
Semver on nested object in JavaScript, major, minor or patch?
我以为我对语义版本控制很了解,但这一变化让我不确定预期的版本变化是什么:
原始代码:
if (result.error) {
return callback(result.error);
}
新代码:
if (result.error) {
result.error.message = `${result.error.message} on ${self.tableName()}`;
return callback(result.error);
}
我认为这个变化可以被归类为patch
、minor
或major
变化。三种情况:
patch
:回调仍在接收一个Error
对象。Error
对象仍然具有message
属性,并且该属性仍然是String
minor
:使用者可能依赖于message
属性的内容,寻找字符串的一部分。这个变化只是在字符串的末尾添加了更多,因此只是添加性的major
:使用者可能依赖于message
属性的内容,现在这是一个不同的字符串
有一次,当我使用的一个库没有像我期望的那样符合semver时,我真的很生气。我不想那样对别人。
我意识到这可能被视为一个主观/基于观点的问题,但我正在寻找"正确"的答案(如果可能的话,提供证据)。最安全的选择显然是选择major
,但我想看看这是否有些过头了。
Patch
当你这样做的时候,你是否必须改变你的任何测试,以适应这种变化?我怀疑不是。如果你不依赖这种消息格式,那么你的消费者依赖它的可能性有多大?
我认为这取决于上下文-有没有一种方法可以在不进行字符串操作的情况下获得错误消息中包含的信息?如果是这样的话,我想说改变它并不是一个突破性的改变——你不应该为了支持以不受支持的方式使用API的代码而竭尽全力。
另一方面,如果没有其他方法可以获得这些信息,那么这就是API的问题。在这种情况下,我建议在错误对象上推送一个包含新消息和方法/属性的主要版本,以获取该信息-这将避免破坏人们的代码,并确保如果您想更改错误消息,则不必再次处理此问题。
相关文章:
- 如何使用url加载程序在webpack中导入多个图像
- keyup事件处理程序更改焦点不适用于快速键入
- 用程序搜索JQuery数据表中的文本
- Javascript:selenium Web驱动程序isDisplayed()不工作
- Canvas Html5绘图应用程序,移动画布会导致重大问题
- Emberjs应用程序加载在除Index之外的所有路由上
- ExtJS 5用程序点击actioncolumn gridview
- Javascript,访问一个主要对象模块模式中的每个对象
- 使用电话间隙在Android应用程序中显示SQL Lite的数据
- 如何从Java/scala调用js美化程序
- 在AngularJS应用程序中使用封装指令和路由的推荐方式是什么
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- angular 1.5应用程序中的导航栏
- 在Windows 10中自动执行例行程序(主要与浏览器交互)
- 将一个主要网站转换为javascript应用程序
- 负载测试Tapestry应用程序主要使用javascript和JMeter
- 创建在单个服务器上运行的metro.js应用程序的多个实例需要哪些主要步骤
- 如何对一个主要负责重定向到应用程序外部页面的Angular服务进行单元测试
- 如何用gulp-bump改变应用程序的主要和次要版本
- 在JavaScript中的嵌套对象上执行Semver,主要、次要或修补程序