作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想知道如何通过使用可选参数来提供向后兼容性。
在我的程序中,我有一个带有函数的接口(interface),该函数在我的整个程序以及许多单元测试中都在使用。对于某些新功能,必须将一个 bool 值传递到此函数中,如果设置为 false
,它将改变其行为。如果您传入 true
,您将获得与以前相同的行为。
现在我必须在当前代码中我之前调用过此函数的任何地方传递 true
。这就是为什么我在想:“好吧,我只是把 true
作为 bool 值的默认值。然后我只需要在我需要的几个新地方传入 false
需要新的行为。”
不过,我觉得,我以这种方式制作界面的动机是现在必须减少编码。通常当那是我能想到的唯一动机时,它是一条捷径,以后可能会咬我。我想不出任何会在以后引起问题的东西,这就是为什么我在这里发布这个问题。
就我上面描述的情况而言,为了向后兼容(例如,在第三方使用的接口(interface)中),将新参数设置为可选参数通常是个好主意吗?
提前致谢。
最佳答案
我反对的充分理由是可选参数默认值仅在编译时使用(使用动态关键字时除外)。
因此,如果您的第三方试图在不重新编译他们的代码的情况下使用新版本(例如将您的库标记为 nuget 中的依赖项),它将不兼容,因为签名有一个额外的参数。
关于c#-4.0 - 使用可选参数实现向后兼容是个好主意吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7516256/
我正在尝试用 Swift 编写这段 JavaScript 代码:k_combinations 到目前为止,我在 Swift 中有这个: import Foundation import Cocoa e
我是一名优秀的程序员,十分优秀!