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

标签 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;
  }
}

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

最佳答案

更新后,这是我的答案:
据我所知,这种反模式并没有真正的名称,但这种方法至少违反了一个原则:
Single-Responsibility-Principle .

这确实是方法的问题,而不是参数对象的问题。

关于c# - 编写这样的代码是否有任何反模式名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5859478/

相关文章:

C++ 帮助重构一个怪物类

c# - .NET:是否有单击并拖动 "Desktop-Like"控件?

java - 初始化可能失败的惰性单例的哪种实现?

java - bloated class 和 tagged class 有什么区别?

java - 设计咨询 : Choosing between Singleton, 工厂等

javascript - 普遍接受的 JavaScript 代码组织最佳实践

c++ - 解释为什么双用途类(class)不好

c# - 以不区分大小写的方式查找子字符串 - C#

c# - Ninject Web 应用程序 : All bindings should be InRequestScope()?

c# - Asp.Net Core - Identity SignInManager - 如何使用附加条件登录以便用户登录(例如 : ClientId, 用户名和密码))