gpt4 book ai didi

java - 我应该为永远不会改变的字段值使用访问器吗?

转载 作者:搜寻专家 更新时间:2023-10-31 08:17:37 24 4
gpt4 key购买 nike

我们以这个类为例:

public class Student{
private String name;
private String id;

public Student(String name, String id){
this.name = name;
this.id = id;
}

... getters and setters for both fields

并将其与此进行比较:

public class Student{
public final String name;
public final String id;

public Student(String name, String id){
this.name = name;
this.id = id;
}
}

我认为不需要访问器。
这会被认为是糟糕的 OO 设计吗?

最佳答案

这是一个加载问题。

不幸的是,好的(或坏的)设计 100% 取决于它的使用方式。

根据经验,将成员变量保持私有(private)是个好主意,这样对象模型就可以控制它们的访问。这意味着第一种方法更好。

但是

如果值永远不会改变,那有什么意义呢?如果它们永远不会被使用,为什么还要费心编写 setter?

那么,哪个更好呢?正如我上面提到的,这取决于你这样做的目的。如果是为了类作业,我会选择第一个。您的老师会更喜欢它,因为它更像“教科书”。

因此,如果这是个人项目或可以利用 future 版本的工作,我会选择两者之间的交叉点:

public class Student{
private final String name;
private final String id;

public Student(String name, String id){
this.name = name;
this.id = id;
}

... getters ONLY for both fields

这种方法是安全的,因为成员字段是私有(private)的,并且没有未使用方法的“代码味道”。这也是相当可扩展的,因为如果您的需求发生变化并且您需要修改字段,您可以很容易地添加 setter 。

关于java - 我应该为永远不会改变的字段值使用访问器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11855898/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com