semantic-versioning - 如果行为保持不变,更改函数返回的类型是否构成向后不兼容的更改?
问题描述
如果我在我的 apiresolve
的版本中具有类似的功能并返回,并且期望得到响应,如果我要更改为返回并响应,这是否需要对我的 api 的主要版本产生影响?还是因为行为方式与我只能增加次要的方式完全相同?1.0.0
resolve
SomeObject
SomeObject
#success?
#failure?
resolve
SomeNewObject
SomeNewObject
#success?
#failure?
SomeNewObject
SomeObject
需要注意的是,这个 api 是一种非强类型语言(Ruby)
解决方案
限定符是它是否可以破坏代码。严格来说,重大更改是一种可能会破坏那些使用您的 API 的代码的更改。在非强类型语言中,如果您可以保证对象足够相似,那么如果任何适用的代码SomeObject
也适用于SomeNewObject
,那么这不是一个重大更改。
在强类型语言中,类型的更改将自动归类为重大更改,因为类型化的变量SomeObject
将无法接收 type 的对象SoneNewObject
。例如,如果您添加了一个新功能,则不会发生重大变化。
推荐阅读
- c# - 如何构建微服务解决方案
- php - PHP不能显示汉字
- javascript - 如何针对不同的依赖版本运行 javascript 单元测试?
- java - 无法为@override 方法抛出异常
- excel - 需要 VBA 代码来过滤两个条件
- r - ggplot geom_histogram 不同颜色
- puppeteer - Puppeteer page.select 不适用于某些元素
- kubernetes - 基于 GPU 利用率的 GKE 上的 Horizontal Pods Autoscaling (HPA)
- java - HQL 使用带前导空格的 HashMap 传递参数
- reactjs - 不变违规:元素类型无效:预期为字符串或类/函数,但得到:未定义