2011-05-02 56 views
1

以下是一些使用参数类来包含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; 
    } 
} 

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

+5

使用参数类不是反模式。 – 2011-05-02 16:14:55

+0

谢谢,我已经意识到这一点。我已更新我的问题以减少对此的困惑。 – 2011-05-02 16:21:06

回答

5

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

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

5

它被称为参数对象模式,它不被视为反模式 - 这是一种处理方法的好方法,否则该方法会有太多参数。

+0

我在询问有关参数对象中没有任何关系的属性。 – 2011-05-02 16:22:43

2

如果使用选项很多,我们有一个叫什么功能羡慕是,你可能想使用移动功能集成到实际功能的指示有可能是一个反模式。

相关问题