gpt4 book ai didi

scala - API 设计 - 混合先决条件检查索引越界?

转载 作者:行者123 更新时间:2023-12-04 20:31:26 25 4
gpt4 key购买 nike

我正在设计一个执行以下操作的 API:

// Drop $howMany items from after $from 
def dropElements[T](array: Array[T], from: Int, howMany: Int)

预期的行为是 howMany 应该是非负的,如果 howMany 为零,则不应进行任何修改。我有两种方法来实现这一点:
def dropElements[T](array: Array[T], from: Int, howMany: Int) {
assert(howMany >= 0);
if (howMany == 0) return;
assert(0 <= from && from < array.length);
....
}

或者:
def dropElements[T](array: Array[T], from: Int, howMany: Int) {
assert(howMany >= 0);
assert(0 <= from && from < array.length);
if (howMany == 0) return;
....
}

我赞成第二种方法(预先声明您的先决条件)与第一种方法相比,但有人指出,当 howMany = 0 时,第一种方法更符合要求。

任何想法或优点/缺点?我问的是 designer of a standard collections library

最佳答案

我的想法,对于它的值(value):

我认为做 from 的边界检查更一致在所有情况下。一个越界from无论 howMany 的值如何,都可能是调用者代码中的错误.对我来说,在这种情况下最好快速失败。

我真的不认为这违反了要求。至少,我(作为您 api 的可能 future 用户)不会对这种行为感到惊讶。

此外,正如您所指出的,预先设置先决条件更具可读性。

所以对我来说第二种方法。

关于scala - API 设计 - 混合先决条件检查索引越界?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45559608/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com