【问题标题】:Getters and setters for all the private variables of a class?一个类的所有私有变量的getter和setter?
【发布时间】:2016-06-06 03:49:29
【问题描述】:

在类的所有私有变量上添加getterssetters真的有必要还是一个好的做法? p>

我不是在询问只读变量。我真正要问的是一般情况,在大多数情况下,我们只是添加 gettersetter 以防万一它们被需要并且不知道它们是否是否会使用。

【问题讨论】:

  • 当然不是。在大多数情况下,类的大部分变量应该是私有字段。此外,在许多情况下,属性应该是只读的,可能根本不需要设置器。但是,对于那些应该公开公开的变量,出于多种原因,有时有必要使用 getter 和 setter 代替字段,但几乎总是好的做法。
  • 有很多博客认为 getter/setter 是邪恶的。我会尽量避免一起。如果我不知道是否需要它们,我永远不会添加它们。
  • @ARUN:我几乎从不需要 setter 属性。内部状态在构造函数中初始化,并使用完全限定的语义命名方法以OO方式更改。阅读所附链接,例如stackoverflow.com/questions/565095/…,了解如何避免设置器。
  • 对于Software Engineering 来说似乎是个好问题,因为它不是关于特定的编程问题,而是关于最佳实践。

标签: class oop object setter getter


【解决方案1】:

对于“getter”和“setter”的使用,不同的人有不同的解释。最纯粹的 OO 人说,他们是evil

但实际上在某些情况下,我们必须至少以非直接方式与他们一起去。

但我认为,按照您的建议无缝添加它们并不是一个好习惯。

【讨论】:

  • 很好的解释。 :)
【解决方案2】:

由于私有属性是定义类的内部状态,因此无需编写访问器。

好处是:

  • 更快的代码执行(更少的函数调用),
  • 更高的可读性和可维护性(更低的 LOC),
  • 只有定义类才能访问私有属性。

【讨论】:

  • 我很难理解你想说什么。
  • 我写的是你不应该对私有财产使用访问器。
  • 但是在很多情况下你必须创建访问器对吗?
  • 对象不应该是公共数据持有者——它不是数据结构。访问器在对象和对象可变性之间创建依赖关系。这就是为什么您应该始终避免使用公共访问器的原因。私有和受保护的访问者没有任何好处。
【解决方案3】:

不必为所有私有变量编写 getter 或 setter。 这只是一个很好的做法。 但是如果没有任何公共函数,您将无法访问该类的私有数据(变量)。

【讨论】:

  • 实际上恰恰相反——公开不必要的信息是不好的做法,因为您可能会创建对私有数据的不想要的依赖关系。信息隐藏是关键原则之一 - 如果您可以通过访问器方法访问所有包含的数据,那么它就会过时。
猜你喜欢
  • 2014-03-27
  • 2013-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多