正确的模式/方法,以避免/最小化基于运行时条件的重复功能

时间:2016-01-12 21:19:31

标签: c# design-patterns const dry c#-5.0

鉴于这种情况:

public const string _constantString_Kind1 = "a constant string";
public const string _constantString_Kind2 = "other constant string";

[SomeSealedAttribute(_constantString_Kind1)]
public static int A_Kind1(); // this was just A()

[SomeSealedAttribute(_constantString_Kind2)]
public static int A_Kind2(); // this was just A() as well,
                             // doing the same thing


public int CallA () {
  return B.SomeRuntimeBooleanFlag ? A_Kind1() : A_Kind2();
}

有没有办法避免这些:

  • 两次声明A_*
  • 引导呼叫的方法
  • 一个运行时检查的两个consts

这似乎可以在元级别使用T4模板或使用Relefection,但我更喜欢避免这些。

在这种情况下,我可以遵循一些更好的模式来练习DRY吗?

1 个答案:

答案 0 :(得分:0)

不确定为什么需要这两个属性,但由于这两种方法的含义不同,因此代码中应该有两种方法。为了尊重DRY,您可以将这两种方法重构为私有方法。

但是可以肯定的是,这段代码有一种气味,但这可能与使用的框架有关(为什么你首先需要那些属性?)