0

可能重复:
为什么要使用 getter 和 setter?

在我看来,编写访问器和修改器方法很麻烦,尤其是在处理非常简单的属性时。我为什么要费心使用它们?

4

3 回答 3

3

答案主要取决于您编写代码的目的是什么,以及如果您独自工作,您对自己的信任程度:

  • 当您与人一起工作或想要强制编译时检查以确保您没有在课堂外使用它们时,保持变量私有很有用
  • 如果您有副作用,setter 很有用
  • 如果你有副作用或者你想让变量保持只读,getter 很有用
  • 拥有或不拥有 getter 和 setter 是您的选择,如果其他人要使用您的类,那么封装可能是一件好事,因为信息隐藏原则
  • 如果你是唯一一个在你的项目上工作的人,就做你想做的事,如果你真的觉得有必要,你会及时添加它们
  • 因为我们在谈论 C++,所以不要忘记friend允许细粒度封装而无需使用 setter 和 getter 的指令(即使它鼓励耦合,所以这里有两种不同的思想流派)
于 2012-12-01T19:12:36.370 回答
2

我不能谈论 C++ 语法负担,但在一般面向对象的术语中,您应该提供 getter 和 setter,因为其他类不知道您如何存储内部状态,包括直接存储哪些属性,这些属性是根据其他状态计算的并进一步转移到其他对象。与更广泛的世界就类如何存储状态进行合同公告将限制您将来可以进行的调整,通常会抑制优化并破坏您的代码,因为您要解决的问题变得更加细微。

于 2012-12-01T19:13:45.907 回答
1
  1. 它们使人们能够控制访问。您可以只读、读/写甚至只写
  2. 它使人们能够在必要时更改底层实现。考虑计算许多车辆的平均速度。您可以通过存储速度列表来实现这一点,然后在需要时计算平均值保持运行总数和数量。
  3. 所有对类的访问都是通过方法。更容易发现错误。
  4. 这不是很多努力。可以使用脚本来创建它们。
于 2012-12-01T19:12:39.417 回答