【问题标题】:How to deal with feature toggling when a new feature requires massive changes in codebase?当新功能需要对代码库进行大量更改时,如何处理功能切换?
【发布时间】:2012-02-23 12:23:48
【问题描述】:

功能切换非常适合新功能 - 在大多数情况下,功能应该简单地被一些 UI 容器包围,这些 UI 容器将基于功能配置可见或不可见。但是,如果新功能需要对现有代码库进行大量更改,如何使用功能切换呢?我不能使用“复制和更改”,因为显然它比功能分支要糟糕得多——我不会遇到任何合并冲突。那么针对此类要求的最佳做法是什么?

【问题讨论】:

  • 你能隐藏所有与你想要切换的“旧”功能相关的控件吗?或者将它们移动到新的 UI 容器中。例如,在 WinAPI 中,这只是创建一个控件列表并执行 SetParent SetWindowPos。

标签: configuration language-agnostic featuretoggle


【解决方案1】:

您可以将功能切换与 IoC 容器相结合,以加载组件的不同实现。例如,切换“A”加载实现“X”,而切换“B”加载实现“Y”。这种方法将允许您维护并行实现并基于单个切换打开旧功能和新功能。

【讨论】:

  • 这种方法存在两个问题。第一个是遗留代码中修复的错误可能无法在新代码中修复(不过,单元测试在这里会有所帮助)。但第二个也是一个主要问题是,在创建新实现之前,应该重写旧实现(甚至不重构)。
猜你喜欢
  • 2018-09-20
  • 2018-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多