language-agnostic standards nomenclature

language agnostic - ¿Hay un nombre "canónico" para una función que combine min() y max()?



language-agnostic standards (8)

En algunos idiomas, tiene el límite de funciones

num = limit (val, min, max)

Encuentro que con frecuencia termino escribiendo una función que siempre llamo " clamp() ", que es una especie de combinación de min() y max() . ¿Hay un nombre "canónico" estándar para esta función?

Siempre se ve algo como esto:

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

O simplemente usando las funciones integradas min() y max() :

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

Existen variaciones: también puede verificar la entrada no válida, donde lower > upper , y arrojar una excepción o invertir las entradas. O puede ignorar el orden de las entradas y llamarlo una función de la mediana de tres, pero eso puede ser confuso.


Solo buscaría un nombre de función "rangeCheck"


Usamos pin aquí. En realidad, utilizamos pin para rangos simples y clamp para otras cosas.


mediana

Porque se generaliza a más valores.


abrazadera es un buen nombre.

Hagamos de él el estándar.


clip(val, lo, hi)


¿Qué hay de atado ?

bound(min, val, max)

¿O restringir ?

constrain(val, min, max)


¿Qué piensas de cosas como InRangeClosestTo (Number, RangeLowerBound, RangeUpperBound) o ClosestInRange (Number, LowerBoundOfRange, UpperBoundOfRange)? Quieren decir ''Obtener el elemento del rango más cercano al número'', como espero que sea obvio.

El concepto es más preciso que una abrazadera que sí tiene dos lados pero no mucho más, o un límite o un límite que podría no querer devolver nada si el número no está dentro del rango,

Para mí son más claros que el resto que vi; aunque puede tomar un par de segundos entenderlos, solo necesita razonar sobre el nombre y, a lo sumo, echar un breve vistazo al comentario para confirmarlo; y es agradable cuando se ve qué tan preciso es (es preciso, ¿verdad?).

Puede que solo tenga dudas sobre si el rango es inclusivo o no, pero creo que la mayoría de las personas asumirían correctamente que es inclusivo. Alternativamente, puede utilizar InInclRangeClosestTo e InExclRangeClosestTo, aunque no veo muchos usos para rangos exclusivos.

Por supuesto, debe tener un IDE autocompletado si desea usarlos.