获得价值的正确方法?

时间:2013-09-26 00:38:54

标签: java return void

作为我的AP课程的一部分,我正在学习java,在处理项目时,我想知道以下哪种方法是返回值的最佳方式?

   public double getQuarters(){
    return quarters;
}

     public void getQuarters(){
    System.out.println(quarters);
}

***注意:我现在第二个选项不是“技术上”返回一个值,但它仍然显示我的值,为什么要这么麻烦?

6 个答案:

答案 0 :(得分:2)

你的回答是正确的。第二种方法根本不返回任何值,因此虽然您可能能够看到输出,但您的程序却不能。第二种方法仍然可以用于测试甚至是命令行应用程序,但它的名称应该类似于printQuarters。

答案 1 :(得分:1)

 public double getQuarters(){
    return quarters;
}

使用此incorder来封装quarters并隐藏它以免被其他程序访问。这意味着,您必须将其声明为private quarters。让我们看看第二个选项:

 public void getQuarters(){
    System.out.println(quarters);
}

但是,这似乎是错误的,因为getQuarters没有返回任何内容。因此,将其重构为

会更有意义
     public void printQuarters(){
         System.out.println(quarters);
     }

答案 2 :(得分:1)

你回答了自己的问题。对于“最佳”一词的大多数定义,您应该选择第一个选项。

但是,您的问题确实触及了访问器和更改器的面向对象编程主题。在您的示例中,“getQuarters”是一个访问者。通常最好使用访问器来检索您的值。这是遵守Open/Closed Principle

的一种方法

此外,Java社区有一个coding convention,许多工具和库依赖于遵循这些约定的代码。

答案 3 :(得分:0)

如果您需要做的就是在调用此方法时显示该值,并且您可以使用控制台输出,那么您的System.out.println方法将完成这项工作。但是,实际返回变量的函数在语义上更正确且更有用。

例如,虽然您可能只需要为当前项目打印变量,但如果您稍后再回来并决定将变量输出到文件,该怎么办?如果您使用getQuarters语句编写了println函数,则需要重写整个函数。另一方面,如果您将函数编写为return,则无需更改任何内容。您所要做的就是为文件输出添加新代码,并在需要时使用该函数。

因此,返回函数更加通用,但在更大的代码项目中更是如此。

答案 4 :(得分:0)

返回值到程序中的特定点,以便程序可以使用它来运行。

您在程序中的特定位置打印值,以便您作为最终用户可以查看您为某些功能获得的值。

根据功能 - 例如,你的 - 在程序中不再考虑quarters的结果;它所做的只是在屏幕上打印一个值,而应用程序没有[干净|简单]的方法让它重新使用它。

如果您的程序需要值才能运行,那么必须return。如果需要调试,则可以在必要时使用System.out.println()

但是,更多时候,您将使用return声明。

答案 5 :(得分:0)

选项1远远优于。

  1. 可以轻松进行单元测试。
  2. 如果规范发生变化,有时您想要打印结果,有时会将其放入数据库,该怎么办?选项1将获取该值的逻辑分开。现在,对于一个方法getQuarters没什么大不了的,但最终你可能有getDimes,getEuros等......
  3. 如果季度可能存在错误情况,例如价值是非法的,该怎么办?在选项1中,您可以返回“特殊”值,例如-1.0,或者抛出异常。然后客户决定该做什么。