gpt4 book ai didi

OOP 是否所有属性都有 getter 和 setter

转载 作者:行者123 更新时间:2023-12-04 02:15:37 25 4
gpt4 key购买 nike

我一直为大多数类属性提供 getter 和 setter。

虽然我读到这很糟糕 - http://www.codeweavers.net/getters-and-setters-are-evil/

依赖注入(inject)和单元测试不需要大多数属性都有一个setter吗?

最佳答案

应该始终使用 getter 和 setter。 getter 或 setter 的原因不是为内部属性提供公共(public)接口(interface),而是提供对属性读/写的控制。它们提供了类属性的抽象。

即使您的类属性是私有(private)的,您也需要 getter 和 setter。这允许在分配或读取之前控制值。

想一想您很久以前设计的一个类,您在其中对每次读取进行一些通用计算。

class A{
private decimal x;
public void do_stuff(){
decimal a = this.x/70;
// process with a
}
public void do_anoter_stuff(){
decimal a = this.x/70;
// process again a
}
}

现在您要更改系数 (70)。你怎么做呢?每个地方都改吗?最好这样设计。

class A{
private decimal x;
private get_x(){ return this.x/70; }
public void do_stuff(){
// process with get_x()
}
public void do_anoter_stuff(){
// process again get_x()
}
}

事实上,盲目地为每个属性使用 getter 和 setter 是邪恶的。经验法则是。使用私有(private) getter 和 setter 将所有属性声明为私有(private)。稍后更改 getter 和 setter 的可见性,仅在需要时允许从外部世界访问

关于OOP 是否所有属性都有 getter 和 setter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12092583/

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