【问题标题】:returning a boolean variable or directly true返回一个布尔变量或直接为真
【发布时间】:2017-06-23 22:53:13
【问题描述】:

我正在努力寻找编写方法的最佳方式。一种方法是用 true 和 false 分配一个布尔变量,然后像这样返回这个变量:-

boolean methodName(..arguments) 
{
    boolean variableName=false;
    if(..check condition) 
    {
        variableName=false;
    }
    return variableName;
}

还有另一种方法也可以直接返回 true 或 false,而无需将其分配给任何布尔变量,例如 return true。

【问题讨论】:

  • 为什么不简单地return (checkConditionHere);??
  • 在这个方法中你总是返回false,在这种情况下你可以很容易地在方法的第一行返回false
  • 你好像在问是否应该使用a single return or multiple returns;没有明确的答案,我所链接的是许多考试中的一项。如果您正在处理一个预先存在的项目,请使用与该项目风格相匹配的任何一个。如果您正在处理自己的项目,请使用您认为更具可读性的任何一个,但要保持一致。如果您需要清理代码,请使用finally 或单次返回。等等……

标签: java


【解决方案1】:

对于对布尔条件没有太多检查的简单方法,通常可以简单地返回truefalse

boolean methodName(..arguments) {
    return <checkCondition>
}

上面的 sn-p 是你代码的 intent 的缩减(我说 intent 因为你的总是返回 false)。

对于更复杂的函数,一个常见的经验法则是分配一个返回变量,类似于您提供的;有太多的 return 语句可能更难维护。

总而言之,它通常归结为软件团队维护的编码标准。

【讨论】:

    【解决方案2】:

    您不需要使用任何变量来返回 true 或 false 值。

    这个简单的方法如下所示:

    boolean yourMethod(argument) {
        if (yourCondition)
            return true;
        else
            return false;
    }
    

    或更简单(更正确):

    boolean yourMethod(argument) {
        return (yourCondition);
    }
    

    例如。用户输入单词(例如“名称”)。你需要检查他是否使用布尔方法准确地写了“名字”。现在你写这个:

    public static void main(String[] args) {
        // We create input stream reader and read input data.
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String s = reader.readLine();
    
        // Now you check out that user wrote exactly your word ("name").
        boolean result = checkInputData(s);
    }
    
    
    // Create boolean method.
    static boolean checkInputData(String arg) {
        return arg.equals("name");
    }
    

    如果用户写了“姓名”,那么您的变量result 将为真。否则会是假的。

    【讨论】:

      【解决方案3】:

      将 true 或 false 值分配给变量或返回 true 或 false 做几乎相同的事情。这取决于在调用您的方法的范围内什么是有意义的以及如何使用它的值。

      就像five.checkToSeeIfItsFive(); 的结果一样,如果它只是返回 true,而不是返回包含 true 值的变量,那么当您阅读它时可能会更有意义。

      【讨论】:

      • "这取决于在调用您的方法的范围内什么是有意义的......"。这绝对是错误。调用方法不应该关心或知道被调用方法的实现细节。
      • 我只是为了让英文更容易阅读和理解,而不是它的实际工作原理。
      • 对我来说,如果它返回 true 或 false,则代码更容易阅读,而且看起来比返回 booleanStatusVariable 之类的东西更简单。但是,在某些情况下,使用变量可能更有意义。
      猜你喜欢
      • 2014-04-30
      • 2018-12-17
      • 2022-10-05
      • 1970-01-01
      • 1970-01-01
      • 2017-12-11
      • 2016-04-02
      • 1970-01-01
      • 2019-06-25
      相关资源
      最近更新 更多