Frage

Ich finde, dass ich häufig eine Funktion Schreiben am Ende, dass ich immer „clamp()“ nennen, ist diese Art von einer Kombination aus min() und max(). Gibt es einen Standard, "kanonischer" Namen für diese Funktion?

Es sieht immer so etwas wie folgt aus:

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

Oder einfach mit dem integrierten in min() und max() Funktionen:

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

Variationen existieren: Sie können auch für ungültige Eingaben überprüfen können, wo lower > upper und entweder eine Ausnahme auslösen oder die Eingänge umkehren. Oder Sie können Reihenfolge der Eingänge ignorieren und nennen es eine Median-of-three-Funktion, aber das kann verwirrend sein.

War es hilfreich?

Lösung

Klammer ist ein guter Name.

Lassen Sie uns es die Norm machen.

Andere Tipps

In einigen Sprachen, die Sie haben die Funktion Grenze

num = Grenze (val, min, max)

clip(val, lo, hi)

Wir verwenden pin hier. Eigentlich verwenden wir pin für einfache Bereiche und clamp für andere Sachen.

Ich würde gehen, nur für einen Funktionsnamen „Rangecheck“

mittlere

Weil es mehr Werte verallgemeinert.

Was ist gebunden

bound(min, val, max)

oder constrain ?

constrain(val, min, max)

Was denken Sie an Dinge wie InRangeClosestTo (Nummer, RangeLowerBound, RangeUpperBound) oder ClosestInRange (Nummer, LowerBoundOfRange, UpperBoundOfRange)? Sie bedeuten ‚Geben Sie mir das Element des Bereichs am nächsten an der Zahl‘, wie ich hoffe, liegt auf der Hand.

Das Konzept ist präziser als eine Klammer, die ja zwei Seiten hat, aber nicht viel mehr, oder ein Limit oder gebunden, die vielleicht nicht wollen, etwas zurückzugeben, wenn die Zahl nicht innerhalb des Bereichs liegt,

Für mich sind sie klarer als der Rest sah ich; obwohl es ein paar Sekunden dauern, sie zu verstehen, müssen Sie nur über den Namen der Vernunft, und die meisten haben einen kurzen Blick auf den Kommentar zur Bestätigung; und es ist schön, wenn man sieht, wie genau es ist (es genau ist, nicht wahr?).

Vielleicht haben Sie nur Zweifel, ob der Bereich ist inklusive oder nicht, aber ich denke, die meisten Leute würden es richtig annehmen, inklusive. Alternativ könnten Sie verwenden InInclRangeClosestTo und InExclRangeClosestTo, althought ich nicht viel von Anwendungen für exklusive Bereiche sehen.

Natürlich sollten Sie eine Auto-Vervollständigung haben IDE, wenn man wollte, sie benutzen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top