C'è un nome “canonica” per un minimo combinando function () e Max ()?
-
21-08-2019 - |
Domanda
Trovo che spesso finisco per scrivere una funzione che chiamo sempre "clamp()
", cioè una specie di combinazione di min()
e max()
. Esiste uno standard, il nome "canonica" per questa funzione?
Sembra sempre qualcosa di simile:
function clamp($val, $lower, $upper)
{
if ($val < $lower)
return $lower;
else if ($val > $upper)
return $upper;
else
return $val;
}
O semplicemente utilizzando built-in lower > upper
e <=> funzioni:
function clamp($val, $lower, $upper)
{
return max($lower, min($upper, $val));
}
Variazioni esistono: Si può anche verificare la presenza di input non valido, dove <=>, e sia generano un'eccezione o invertire gli ingressi. Oppure si può ignorare ordine degli ingressi e chiamare una funzione mediana-di-tre, ma che può essere fonte di confusione.
Soluzione
morsetto è un buon nome.
Facciamo lo standard.
Altri suggerimenti
In alcune lingue si ha la funzione di limite di
num = Limite (val, min, max)
clip(val, lo, hi)
Usiamo pin
qui. A dire il vero, usiamo clamp
per semplici gamme e <=> per altre cose.
Vorrei solo andare per un nome di funzione "rangeCheck"
mediano
Perché generalizza a più valori.
Cosa ne pensi di cose come InRangeClosestTo (Numero, RangeLowerBound, RangeUpperBound), o ClosestInRange (Numero, LowerBoundOfRange, UpperBoundOfRange)? Significano 'Prendimi l'elemento della gamma più vicino al numero', come spero sia evidente.
Il concetto è più preciso di un morsetto che sì ha due lati, ma non molto di più, o un limite o Bound che potrebbero non vogliono restituire nulla se il numero non è all'interno della gamma,
Per me sono più chiare poi il resto ho visto; anche se può prendere un paio di secondi per capire loro, è solo bisogno di ragionare sul nome, e al massimo un breve sguardo al commento per la conferma; ed è bello quando si vede come precisa è (è preciso, giusto?).
Si potrebbe avere solo dubbi sul fatto che l'intervallo è compreso o no, ma penso che la maggior parte delle persone sarebbe corretto supporre che sia inclusiva. In alternativa si potrebbe utilizzare InInclRangeClosestTo e InExclRangeClosestTo, ma decorate non vedo un sacco di usi per i campi in esclusiva.
Naturalmente si dovrebbe avere un IDE auto-completamento se si voleva usarli.