0

我很少有方法可以接受固定大小的集合(例如 2、3、5)。而且我无法决定哪种方式更好:

public void Foo(IEnumerable<Object> objects)
{
    if(objects.Count() != 3)
    {
        throw new Exception()
    }
    // actions
}

public void Foo(Object objectA, Object objectB, Object objectC)
{
    // actions
}

每个选项都有最终的 +\- 吗?

4

3 回答 3

7

在我看来,第二个要好得多:

  • 从签名中可以明显看出它需要 3 个值
  • 在编译时而不是执行时标记失败
于 2013-10-29T14:04:06.417 回答
2

如果您需要特定数量的成员,请使用第二个选项。如果允许集合但随后在运行时抛出异常,那么您的方法的使用者会感到困惑。如果没有使用适当的测试并且它具有误导性,这可能会或可能不会被抓住。始终为将使用您的代码的人设计,永远不要假设您将始终是维护它的人。

于 2013-10-29T14:05:16.247 回答
1

我会这样做:

public class Bar
{
    public Object object1;
    public Object object2;
    public Object object3;

    // add a constructor if you want
}

...

public void Foo(Bar b)
{
      // actions
}
于 2013-10-29T14:08:42.697 回答