Gibt es einen „kanonischen“ Namen für eine Funktion kombiniert min () und max ()?
-
21-08-2019 - |
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.
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 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.