当前位置: 首页 > 知识库问答 >
问题:

确定两个值是否在某个范围内的最干净、可读性最强的方法是什么?

薛博艺
2023-03-14

我有两个变量,float afloat b。仅当ab都在0.0f1.0f之间时,我想将boolean inRange变量设置为true。我可以这样做:

boolean inRange = a >= 0.0f && a <= 1.0f && b >= 0.0f && b <= 1.0f;

但是我想知道是否有更好的方法来检查这个。有没有更干净的方法,或者更有效的方法来做到这一点?

共有3个答案

邢炯
2023-03-14

创建方法:

public boolean inRangeMethod(float a){
                return (a>=0.0f && a<=1.0f);
            }

之后:

boolean inRange = false;
inRange = inRangeMethod(a) && inRangeMethod(b);
仲孙阳
2023-03-14

没有比这更有效的方法了,但在我看来,这绝对是“更干净”的。实现这一点的一种方法是为边界定义常量。第二,使用辅助方法来检查单个值可以提高主方法的可读性。请参见下面的示例

public class YourClass {
    private static final float FLOOR = 0.0f;
    private static final float CEILING = 1.0f;

    public boolean inRange(float a, float b) {
        return inRange(a) && inRange(b);
    }

    private boolean inRange(float x) {
        return x > FLOOR && x < CEILING;
    }
}
东郭阳德
2023-03-14

为它创建一个方法(函数是最古老的代码组织类型是有原因的,它们可以工作!)

if(inRange(a) && inRange(b))
   ...

当然,这可以根据您的需要进行修改,但一般来说,拥有另一个具有良好名称的方法是一个极好的解决方案。此外,您没有在代码中分发1.0/0.0常量。

一个更通用的答案是创建一个RangeValidation类(假设您有其他Validation类)

RangeValidation criticalRange=new RangeValidation(0.0, 1.0);

criticalRange.validate(a);
criticalRange.validate(b);

这种模式一开始有点冗长,但它可以用作验证系统的一部分——想象许多不同类型的验证对象,它们都可以用一个简单的allValidations.validate(a)对一个值运行。标量不是很有用,但是模式可以用来验证更复杂的对象

 类似资料:
  • 以下代码根据变量所处的范围,为变量指定特定值。 这工作得很好,但是我想知道是否有一种更Pythonic的方法来编写下面的条件块。

  • 问题内容: 那就是我的做法: 有什么好处吗?如何避免那些意粉般的代码? 问题答案: 检出异步库,它用于控制流(异步内容),并且它有很多用于数组内容的方法:每种方法,过滤器,映射。查看github上的文档。这可能是您需要的: 每个(arr,迭代器,回调) 将迭代器函数并行应用于数组中的每个项目。调用迭代器时,将使用列表中的项目以及完成时的回调。如果迭代器将错误传递给此回调,则该函数的主回调将立即被错

  • 问题内容: 我想在字典中的所有键上映射一个函数。我希望可以执行以下操作,但是过滤器无法直接应用于字典。实现这一目标的最干净的方法是什么? 在此示例中,我尝试将每个值加1。但这对于示例来说是偶然的-主要目的是弄清楚如何将map()应用于字典。 问题答案: 迅捷4+ 好消息!Swift 4包含一种方法,该方法使用相同的键但值不同来构造字典的副本。它还包含一个重载函数,该重载函数返回a 和,并使用初始值

  • 问题内容: 哪种方法可以更好地检查属性是否存在? Jarret Hardie提供了以下答案: 我看到它也可以通过以下方式完成: 一种方法通常比其他方法使用更多吗? 问题答案: 没有“最佳”方法, 因为您永远不会仅仅检查属性是否存在;它始终是某些较大程序的一部分。有几种正确的方法,一种值得注意的不正确的方法。 这是演示此技术失败的演示: 输出: 大多数情况下,您不想惹恼。这是用于执行特殊操作的特殊属

  • 问题内容: 我有一个DOM元素,应用了以下一些/全部效果: 我正在编写一个调整此元素大小的jQuery插件,我需要暂时禁用这些效果,以便可以平滑地调整其大小。 临时禁用这些效果(然后重新启用它们)的最优雅的方法是什么,因为它们可能是由父母应用的,也可能根本没有应用。 问题答案: 简短答案 使用此CSS: 加上这个JS(没有jQuery)… 或者这个带有jQuery的JS … …或使用您正在使用的任

  • 正如标题所示…我试图找出开销最小的最快方法来确定记录是否存在于表中。 示例查询: 说<代码>?与< code>'TB100'交换...第一个和第二个查询将返回完全相同的结果(比如...此对话的< code>1)。最后一个查询将按预期返回< code>'TB100',如果< code>id不在表中,则返回nothing。 目的是弄清楚是否在表中,如果不在,程序接下来将插入记录,如果是,程序将跳过它或