使用可选参数来实现向后兼容性是一个好主意吗?

2024-03-31

我想知道如何通过使用可选参数来提供向后兼容性。

在我的程序中,我有一个带有函数的接口,该函数在整个程序以及许多单元测试中使用。对于某些新功能,必须将布尔值传递到此函数中,如果设置为,则会改变其行为false。如果你通过true,您将得到与以前相同的行为。

现在我必须通过true在我当前的代码中我之前调用过这个函数的所有地方。这就是为什么我在想:“好吧,我只是把true作为布尔值的默认值。那我只需要传入false在一些我需要新行为的新地方。”

然而,我觉得我以这种方式制作界面的动机是必须减少编码now。通常,当这是我能想到的唯一动机时,它就是一条捷径,并且可能会在以后咬我。不过,我想不出有什么会在以后引起问题的,这就是我在这里发布这个问题的原因。

除了我上面描述的情况之外,一般来说,为了向后兼容性而使新参数可选(例如在第三方使用的接口中)是一个好主意吗?

提前致谢。


我反对的充分理由是可选参数默认值仅在编译时使用(除非使用动态关键字)。

因此,如果您的第三方尝试使用新版本而不重新编译其代码(例如将您的库标记为 nuget 中的依赖项),则它将不兼容,因为签名有一个额外的参数。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用可选参数来实现向后兼容性是一个好主意吗? 的相关文章

  • ASP.NET MVC 1 向前兼容 ASP.NET MVC 2 吗?

    我可以使用 MVC 2 程序集顺利运行 MVC 1 应用程序吗 我知道一些 3rd 方工具在 MVC 2 中出现了问题 但我们假设我没有使用这些其他工具 曾经有过重大变化 http go microsoft com fwlink LinkI
  • 将数组的所有元素传递给具有可变参数的函数 (...)

    我需要将可变数量的参数传递给允许可变数量参数的 c 函数 function a int n n number of parameters int b XXX XXX is more or less run time dynamic Fils
  • 正则表达式太贪婪了

    我正在尝试编写一个正则表达式 但它太贪心了 输入字符串可以采用以下格式之一 STUFF 12 1234 or STUFF 1234 我想要做的是创建一个正则表达式来抓取最后一个之后的字符 所以在上面的例子中 这将是数字 1234 最后一个之
  • 是否可以将实体框架与 Windows Azure 开发存储服务一起使用?

    编辑 是否可以将实体框架与 Windows Azure 开发存储服务一起使用 如何 Thanks 不 这是不可能或不切实际的 Azure 存储 与 SQL Azure 不同 不支持加入 并且可能无法很好地响应即席查询 但你不需要它 Azur
  • 正则表达式在特定单词模式处分割字符串

    我正在尝试拆分一个可能如下所示的字符串 International Bank for Reconstruction Development NAICS 928120 SIC 6081 World Bank NAICS 928120 SIC
  • 将异步结果分配给数据绑定属性

    下面是一个示例实现 它使用 Metro API 和数据绑定 使用 MVVM 来填充下拉列表中的文件夹列表 View 模型的构造函数使用 SetFolders 方法 私有异步 该方法调用可等待方法 fileService GetFolders
  • 如何按子类别创建动态子菜单

    我正在设置一个菜单Sub menu展示Sub categories 在数据库中我创建了一列isSelected具有布尔数据类型 要是Sub categories is isSelected true 它将显示在主页上 我想知道如何设置Sub
  • 在 C#4.0 中从字符串构建 Linq 查询 - 最佳实践

    目前 我正在使用 LinqKit Ms 动态查询示例从字符串动态构建 Linq 表达式 这很好用 LinqKit http www albahari com nutshell linqkit aspx http www albahari c
  • 允许用户在 Windows 8 应用程序中使用 RichEditBox 中的选项卡?

    现在 选项卡功能将焦点移动到下一个控件 我希望它实际上只是在文本框中选项卡 我注意到您也无法在 Windows 8 邮件应用程序中使用 Tab 键 还有 RichTextBox 替代品吗 目前 在 RTM 版本中 没有AcceptsTab就
  • C# 对由线程池处理的相关任务进行排队

    我想将需要按顺序处理的多个流中的相关任务 在每个流中 排队 这些流可以并行处理 具体来说 假设我需要两个队列 并且我希望每个队列中的任务按顺序处理 以下是示例伪代码 用于说明所需的行为 Queue1 WorkItem wi1a enqueu
  • 如何将一个 xaml 页面导航到另一页面?

    我有 2 个页面 我需要将 mainpage xaml 导航到 login page xaml 但它让我崩溃你调用的对象是空的 在 Root Children Clear 我在 App xaml 中添加了以下代码 private void
  • 在 C# 中创建 Cron 作业

    我正在用 C 编写一个调度类型应用程序 并允许用户存储他们想要在特定时间运行的任务 现在 我为他们提供了指定运行频率 每日 每周 每月 以及指定时间的选项 然后将其存储在数据库中 我在理解其背后的伪代码时遇到了一些麻烦 并且正在寻找一些有关
  • 如何在代码中访问 DataGridCell 的数据对象?

    基本上 我已经绑定了数据网格 使其类似于科目时间表 每行代表一个学期的科目 该学期内的每个单元格代表一个科目 我现在尝试添加拖放功能 以便您可以将其他主题拖到网格上 这将更新底层数据结构 我可以使用一些可视化树方法来查找用户将新主题拖动到的
  • 如何从 ConcurrentBag<> 中删除单个特定对象?

    随着新ConcurrentBag
  • 关于c#中|=的问题

    C 中 是什么意思 Example int a 0 int b a 5 我找不到任何这方面的提示 OR 赋值运算符 完整的解释在这里 http msdn microsoft com en us library h5f1zzaw v vs 7
  • 如何通过 NUnit 有效地对使用 ADO.NET 和 SQL Server 的 DAL 进行单元测试?

    因此 您在 C 中有一个使用存储库模式的 DAL 并且每个存储库都有一个接口 它由 ADO NET MS SQL Server 和存储过程调用支持 这对于在进行单元测试时对正在其他地方使用的存储库进行存根 模拟非常有用 我喜欢它 不过 我很
  • C# 中服务器端代码的 ModalPopupExtender

    我做了一场噩梦 将 ModalPopupExtender 添加到表单很容易 您将其放在上面并告诉它两个所需的控件参数 PopupControlID MyModalPanel TargetControlID ButtonToLoadIt 它工
  • WCF 服务中的“即发即忘”

    我在 Azure 上有很多 WCF REST 服务 在某些 WCF 服务中 我向外部服务调用 Http 请求 例如发送电子邮件 短信 对非关键第三方服务的 http 请求 我不希望这阻碍我对客户电话的响应 需要一些关于在这种情况下使用的模式
  • 如何使用C#在asp.net中下载xml文件

    我正在使用网络应用程序ASP NET 与 MVC3 我是 mvc3 的新手 我的网页上有一个下载按钮 当我要单击下载按钮时 我希望能够打开该 XML 文件 我尝试过一些代码更改动作结果但我没有打开文件 通过使用下面提到的代码 我收到一个下载
  • 限制C#中的并行线程数

    我正在编写一个 C 程序来生成并通过 FTP 上传 50 万个文件 我想并行处理4个文件 因为机器有4个核心 文件生成需要更长的时间 是否可以将以下 Powershell 示例转换为 C 或者是否有更好的框架 例如 C 中的 Actor 框

随机推荐