是否有任何反模式名称来编写这样的代码?

Cha*_*ert 1 c# design-patterns anti-patterns parameter-object

下面是一些使用参数类来包含Show()方法可能参数的代码.这个FooOption类中的值不是很相关.您可以通过查看Show()下面的实现来看到这一点.我知道这是错误的代码,但有没有与此相关的反模式?

class FooOptions {
  public int? Id { get; set; }
  public string BazContext { get; set; }
  public int? BazId { get; set; }
}

class BarMgr {
  public Bar Show(FooOptions options) {
    if (options == null)
      options = new FooOptions();
    if (options.Id.HasValue)
      return svc.GetBar(options.Id.Value);
    if (!string.IsNullOrEmpty(options.BazContext) && options.BazId.HasValue)
      return svc.GetBar(options.BazContext, options.BazId.Value);
    return null;
  }
}
Run Code Online (Sandbox Code Playgroud)

更新:我知道参数对象不是反模式.根据我的经验,参数对象属性是相关的.这是我试图找到的可能的反模式.设置所有三个属性是没有意义的.

Ern*_*ill 5

它被称为参数对象模式,并且它不被视为反模式 - 它是处理原本会有太多参数的方法的好方法.


Dan*_*rth 5

您的更新,在这里我的答案后:
据我所知,没有像这样一个反模式没有真名,但至少有一个原则,这个方法违反了:
单责任-原则.

它确实是方法的问题,而不是参数对象的问题.