Trovo che finisca spesso per scrivere una funzione che chiamo sempre "clamp()
", che è una specie di combinazione di min()
e max()
. Esiste un nome standard, "canonico" per questa funzione?Esiste un nome "canonico" per una funzione che combina min() e max()?
Si guarda 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 min()
e max()
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 lower > upper
, e lanciare un'eccezione o invertire gli input. Oppure puoi ignorare l'ordine degli input e chiamarlo funzione di mediana di tre, ma ciò può essere fonte di confusione.
Eviterei di dare ai parametri gli stessi nomi delle funzioni utilizzate, in particolare perché non vengono utilizzati in coppie corrispondenti (vale a dire $ min viene utilizzato con max() e viceversa). Forse $ lower e $ upper, invece. –
@BenBlank: buona idea. ha modificato la domanda – Kip
Io uso il nome InRange() ma il mio commento non riguarda il nome, riguarda l'ordinamento dei parametri. Trovo più facile leggere: InRange (min, value, max) rispetto a (value, min, max) –