gpt4 book ai didi

design-patterns - 什么设计模式可用于功能切换意大利面?

转载 作者:行者123 更新时间:2023-12-04 19:55:07 25 4
gpt4 key购买 nike

我工作的公司已经使用功能切换配置键,根据某些条件打开/关闭特定行为。 Martin Fowler 实际上将它们称为业务切换 (http://martinfowler.com/bliki/FeatureToggle.html)。

我们有许多客户都使用相同的服务,但每个客户都想要略有不同的行为。更糟糕的是,许多人希望他们的用户的某些子组看到不同的行为。因此,我们使用业务切换。切换开关已经变成了 if/else 逻辑的意大利面球,偶尔会有意想不到的交互。

是否有任何设计模式可用于管理此类情况?

干杯!

最佳答案

  • 这些开关应该是运行时开关,而不是编译时开关。原因是,交换机应该无需重新部署即可操作。
  • 实现运行时条件逻辑有两种可能性:
  • if-then-else (或 switch-case 用于多状态开关)
  • 多态,它需要一种面向对象的编程语言。

  • 我个人更喜欢使用普通的 if-then-else构造,装饰有评论说 TODO: Remove when feature has been tested.当适用。

    请记住,每个功能标志 is a technical debt .不要过度使用它们。我建议不要将它们用于业务逻辑。

    但是,关于您的业务切换意大利面球,我建议进行重构。
  • 任何函数的嵌套深度都不应大于 2。如果有,则拆分为具有有意义名称的多个函数。
  • 消除双重否定。
  • De Morgan's laws对于重新组织条件逻辑特别有用。


  • 如果这还不够,您可以使用 graph 对业务逻辑进行建模。 (例如决策流程图)或 Matrix并使用各自的标准算法。

    关于design-patterns - 什么设计模式可用于功能切换意大利面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32340118/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com