访问者和变异者方法

时间:2012-12-01 19:08:14

标签: c++ attributes accessor mutators

  

可能重复:
  Why use getters and setters?

在我看来,编写访问器和mutator方法是一个很大的麻烦,特别是在处理非常简单的属性时。我为什么要打扰使用它们?

3 个答案:

答案 0 :(得分:3)

答案主要取决于你编写代码的内容以及单独工作时你对自己的信任程度:

  • 将变量保密为非常有用,当您与人合作或希望强制执行编译时检查以确保您没有在课外使用它们时
  • 如果你有副作用,
  • setters非常有用
  • 如果您有副作用或想要保持变量只读,
  • getter非常有用
  • 有没有getter和setter是你的选择,如果其他人打算使用你的类,那么封装可能是一件好事,因为信息隐藏原则
  • 如果您是唯一一个从事您的项目工作的人,只要按照您的意愿去做,如果您真的觉得有必要,您将及时添加它们
  • 因为我们所说的C ++不要忘记允许细粒度封装的friend指令而不需要设置setter和getter(即使它鼓励耦合,所以这里有两种不同的思维流派)

答案 1 :(得分:2)

我不能说C ++的语法负担,但在一般的面向对象术语中,你应该提供getter和setter,因为其他类没有业务知道如何存储你的内部状态,包括直接存储哪些属性,这是基于计算的在其他状态,并进一步下放到其他对象。与更广泛的世界签订关于课程如何存储状态的合同公告将限制您将来可以进行的调整,通常会抑制优化并破坏您的代码,因为您正在解决的问题变得更加微妙。

答案 2 :(得分:1)

  1. 他们启用一个来控制访问。你可以只读,读/写甚至只写
  2. 如果需要,它可以让人们更改底层实现。考虑计算许多车辆的平均速度。您可以通过存储速度列表来实现此目的,然后在需要时计算平均值 OR 保持运行总数和数量。
  3. 所有对课程的访问都是通过方法进行的。更容易发现错误。
  4. 这不是很多努力。可以使用脚本来创建它们。