我想知道如何通过使用可选参数来提供向后兼容性。
在我的程序中,我有一个带有函数的接口,该函数在整个程序以及许多单元测试中使用。对于某些新功能,必须将布尔值传递到此函数中,如果设置为,则会改变其行为false
。如果你通过true
,您将得到与以前相同的行为。
现在我必须通过true
在我当前的代码中我之前调用过这个函数的所有地方。这就是为什么我在想:“好吧,我只是把true
作为布尔值的默认值。那我只需要传入false
在一些我需要新行为的新地方。”
然而,我觉得我以这种方式制作界面的动机是必须减少编码now。通常,当这是我能想到的唯一动机时,它就是一条捷径,并且可能会在以后咬我。不过,我想不出有什么会在以后引起问题的,这就是我在这里发布这个问题的原因。
除了我上面描述的情况之外,一般来说,为了向后兼容性而使新参数可选(例如在第三方使用的接口中)是一个好主意吗?
提前致谢。
我反对的充分理由是可选参数默认值仅在编译时使用(除非使用动态关键字)。
因此,如果您的第三方尝试使用新版本而不重新编译其代码(例如将您的库标记为 nuget 中的依赖项),则它将不兼容,因为签名有一个额外的参数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)