组合min()和max()的函数是否有“规范”名称?

时间:2009-02-05 15:56:00

标签: language-agnostic standards nomenclature

我发现我经常最终编写一个我称之为“clamp()”的函数,这是min()max()的组合。该功能是否有标准的“规范”名称?

它总是看起来像这样:

function clamp($val, $lower, $upper)
{
  if ($val < $lower)
    return $lower;
  else if ($val > $upper)
    return $upper;
  else
    return $val;
}

或者只是使用内置的min()max()函数:

function clamp($val, $lower, $upper)
{
  return max($lower, min($upper, $val));
}

存在变化:您还可以检查无效输入,lower > upper,并抛出异常或反转输入。或者您可以忽略输入的顺序并将其称为三次中值函数,但这可能会令人困惑。

8 个答案:

答案 0 :(得分:37)

clamp 是一个好名字。

让我们把它作为标准。

答案 1 :(得分:5)

在某些语言中,您有功能限制

num = limit(val,min,max)

答案 2 :(得分:3)

clip(val, lo, hi)

答案 3 :(得分:1)

我们在这里使用pin。实际上,我们将pin用于简单范围,将clamp用于其他内容。

答案 4 :(得分:0)

我只想找一个功能名称“rangeCheck”

答案 5 :(得分:0)

中值

因为它推广到更多的价值观。

答案 6 :(得分:0)

绑定怎么样?

bound(min, val, max)

constrain

constrain(val, min, max)

答案 7 :(得分:0)

您如何看待 InRangeClosestTo (Number,RangeLowerBound,RangeUpperBound)或 ClosestInRange (Number,LowerBoundOfRange,UpperBoundOfRange)?他们的意思是“让我得到最接近数字的范围的元素”,我希望这很明显。

这个概念比Clamp更精确,是因为它有两个但不是更多,或者如果数字不在范围内,可能不想返回任何东西的限制或界限,

对我来说,他们比我看到的其他人更清楚;虽然理解它们可能需要几秒钟,但您只需要对该名称进行推理,并且最多只需简要查看注释即可确认;当你看到它有多精确时(它是精确的,对吧?)它很好。

你可能只怀疑范围是否具有包容性,但我认为大多数人会正确地认为它是包容性的。或者你可以使用InInclRangeClosestTo和InExclRangeClosestTo,虽然我没有看到很多用于独占范围。

当然,如果你想使用它们,你应该有一个自动完成的IDE。