هل هناك "canonical" اسم وظيفة الجمع بين مين() وماكس()?
-
21-08-2019 - |
سؤال
أجد أنني في كثير من الأحيان في نهاية المطاف كتابة دالة أدعو دائما "clamp()
"هذا هو نوع من مزيج من min()
و max()
.هل هناك معيار "canonical" اسم هذه الوظيفة ؟
دائما تبدو شيئا مثل هذا:
function clamp($val, $lower, $upper)
{
if ($val < $lower)
return $lower;
else if ($val > $upper)
return $upper;
else
return $val;
}
أو ببساطة استخدام المدمج في min()
و max()
وظائف:
function clamp($val, $lower, $upper)
{
return max($lower, min($upper, $val));
}
الاختلافات موجودة:يمكنك أيضا التحقق من إدخال غير صالح ، حيث lower > upper
, و إما رمي استثناء أو عكس المدخلات.أو يمكنك تجاهل النظام من المدخلات نسميها متوسط من ثلاثة وظيفة ، ولكن هذا يمكن أن يكون مربكا.
المحلول
المشبك هو اسم جيد.
دعونا نجعل من هذا المعيار.
نصائح أخرى
في بعض اللغات لديك الحد الدالة
والأسطوانات = الحد (فال، دقيقة، كحد أقصى)
clip(val, lo, hi)
ونحن نستخدم pin
هنا. في الواقع، ونحن نستخدم pin
لنطاقات بسيطة وclamp
عن غيرها من الاشياء.
وكنت مجرد الذهاب لاسم الدالة "rangeCheck"
متوسط
لأنه يعمم إلى المزيد من القيم.
ما رأيك في أشياء مثل InRangeClosestTo(رقم RangeLowerBound, RangeUpperBound) ، أو ClosestInRange(رقم LowerBoundOfRange, UpperBoundOfRange)?أنها تعني 'أعطني عنصر من مجموعة الأقرب إلى عدد', وأتمنى أن يكون واضح.
هذا المفهوم هو أكثر دقة من المشبك أن نعم الجانبين ولكن ليس أكثر من ذلك بكثير أو حد أو لا بد من أن قد لا تريد العودة إلى أي شيء إذا لم يكن الرقم ضمن مجموعة ،
لي أكثر وضوحا ثم بقية رأيت ؛ على الرغم من أنه يمكن أن يستغرق بضع ثوان إلى فهم لهم ، تحتاج فقط إلى السبب عن اسم ، وفي معظم نظرة سريعة على التعليق على تأكيد ؛ انها لطيفة عندما ترى كيف دقة هو (أنها دقيقة ، أليس كذلك؟).
قد يكون لديك فقط شكوك حول ما إذا كانت مجموعة شاملة أو لا, ولكن أعتقد أن معظم الناس سوف بشكل صحيح نفترض انها شاملة.بدلا من ذلك يمكنك استخدام InInclRangeClosestTo و InExclRangeClosestTo, althought أنا لا أرى الكثير من الاستخدامات حصرية نطاقات.
بالطبع يجب أن يكون لديك لصناعة السيارات في استكمال IDE إذا أردت استخدامها.