如果行为保持不变,更改函数返回的类型是否构成向后不兼容的更改?

问题描述 投票:0回答:1

[如果我有类似resolve的函数,并且在我的api版本1.0.0中,并且resolve返回SomeObject,并且期望SomeObject响应#success?#failure?,如果我要更改[ C0]返回resolveSomeNewObject响应SomeNewObject#success?这是否需要对我的api的主要版本进行修改?还是因为#failure?的行为与SomeNewObject完全相同,所以我只能递增未成年人吗?

应注意,此api使用的不是强类型语言(Ruby)

semantic-versioning
1个回答
1
投票

限定符是是否可以破坏代码。严格来说,breaking change是可能会破坏使用您API的用户的代码的代码。在非强类型语言中,如果可以保证对象足够相似,那么如果任何与SomeObject一起使用的代码也可以与SomeObject一起使用,那么这并不是一个重大改变。

在强类型语言中,类型更改将自动归类为重大更改,因为类型为SomeNewObject的变量将无法接收类型为SomeObject的对象。例如,如果您添加了新功能,则为不间断的更改

© www.soinside.com 2019 - 2024. All rights reserved.