Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么创建方法比将变量声明为字段更好?_Java - Fatal编程技术网

Java 为什么创建方法比将变量声明为字段更好?

Java 为什么创建方法比将变量声明为字段更好?,java,Java,int timeDuration=持续时间*年内的月数 我的在线指导老师说我应该声明一个名为getTimeDuration的方法,而不是创建一个同名的字段。我的问题是为什么创建方法更可取。谢谢 一个原因是,将来如果将变量设置为private,或者它将成为private数据,则不允许在类边界之外访问此变量。因此,由此类getter和面向对象getter获取的变量value的值用于此目的,并开始起作用。这里的getters是类似getTimeDuration的方法。这可能会陷入一场风格之战。一些营地

int timeDuration=持续时间*年内的月数


我的在线指导老师说我应该声明一个名为getTimeDuration的方法,而不是创建一个同名的字段。我的问题是为什么创建方法更可取。谢谢

一个原因是,将来如果将变量设置为private,或者它将成为private数据,则不允许在类边界之外访问此变量。因此,由此类getter和面向对象getter获取的变量value的值用于此目的,并开始起作用。这里的getters是类似getTimeDuration的方法。

这可能会陷入一场风格之战。一些营地的人总是使用getter,而其他营地的人很少使用getter。你会发现没有一个100%一致的答案

实际上,在私有final变量上使用getter与直接访问之间几乎没有区别。好的运行时环境将内联getter,这只会增加一点点开销

选择使用getter有几个原因:如果要将正在检索的值视为API的一部分;如果getter获得的值在子类中不同;如果要放置断点或日志或以其他方式跟踪调用以访问该值;如果您想要一个位置来附加getter获得的值的文档,它将是getter名称和显式文档


另一方面,添加getter确实会增加一点代码膨胀。

一些代码片段被称为最佳实践,它们由有经验的人讲述,并被开发人员和程序员接受,原因如下:

更可读的代码 易于更改,以便将来扩展或调试 更好的性能 帮助开发人员进行更好的配置 ... 我们正在讨论的使用setter和getter访问或修改字段的问题,有我提到的一个或一些问题,所以开发人员最好使用它

更具体地说,通过在方法中设置一个字段(该方法称为setter),您可以检查用户输入,为您的代码设置一些规则,以及一些框架作为开发人员提供的更多功能


通过名为getter的方法访问字段的值,在某些情况下可能会增加一些功能,想象一下您希望用户读取字段但无法更改它的情况。这样做很容易。

您打算多次计算吗?不,但如果我以后更改计算会怎么样。通常不公开类成员。使用getter和setter。在这种情况下,有人可以更改timeDuration的值,但是getTimeDuration只是用于读取。非常感谢,但是如果该字段声明为private,那么在这种情况下没有人会更改该值。。。。记录应该比代码膨胀更有效