0

这是一个例子。我在网上看到了一个“ReadOnlyDictionary”类,它有以下代码:

void ICollection.CopyTo(Array array, int index)
{
    ICollection collection = new List<KeyValuePair<TKey, TValue>>(this._source);

    collection.CopyTo(array, index);
}

例如,我应该检查数组是否有空参数,还是应该让 CopyTo 方法为我做这件事?这似乎有点多余,但如果最佳实践说用你自己的方法检查所有内容,那么这就是我想要做的。我只是不确定“最佳实践”所说的要做什么。

4

2 回答 2

1

我认为明智的做法是,如果你打算做一些array依赖于它不为空的事情,那么你应该检查一下。但如果它只是通过,那么我看不出你应该检查的理由。

另一个想法是该方法将来是否会变得复杂。您可能仍想检查它,因为有人可能会修改代码并在array没有意识到它可能为空的情况下使用它。在我看来,这只是为了维护好的代码。

于 2011-09-16T15:44:16.670 回答
1

如果其他人的库或 API* 要抱怨我的输入,我不想给它这些输入,我想先验证和/或抱怨。如果对外部 API 的调用很昂贵,例如数据库或 Web 服务调用,这一点尤其重要。

您知道 API 将拒绝哪些输入。不要发送这些,在您自己的公共 API 中使它们无效。


*注意:我认为我自己的公共边界是一回事。如果我有Foo不喜欢给定参数的类,如果我调用Foo, 在这样做之前的某个级别,我将验证我的参数。您不会在每个级别都这样做(假设有间接层,也许是私有方法调用私有方法等),但在一些合理的公共边界上,我会验证。尽早验证,不要让复杂的逻辑或工作在无论如何都会被拒绝时完成。

于 2011-09-16T15:46:54.197 回答