当前位置:  开发笔记 > 编程语言 > 正文

类属性声明:私有vs公共

如何解决《类属性声明:私有vs公共》经验,为你挑选了2个好方法。

定义私有属性而不是公共属性有什么好处?如果我可以将它们公开,为什么还要创建额外的工作来创建访问和修改私有属性的方法?



1> Andrew Grant..:

在短期内没有,除了让OOP纯粹主义者不高兴.

(我假设你的意思是揭露否则会使用getter/setter的属性 - 显然,如果你将所有属性公开,那么会有很大的不同).

从长远来看,有一些很好的理由.

首先,它允许您在源头验证输入,而不是以后必须使用硬件断点和黑魔法的组合来回溯原点.

例如

void Foo::setWeight(float weight)
{
  ASSERTMSG(weight >= 0.0f && weight <= 1.0f, "Weights must fall in [0..1]");
  mWeight = weight;
}

它还允许您以后更改对象的行为,而无需重构客户端代码.

例如

void Foo::setSomething(float thing)
{
  mThing = thing;
  // 2009/4/2: turns out we need to recalc a few things when this changes..
  ...
}



2> Kalium..:

如果使用getter/setter,则可以在更改或访问时执行逻辑.您可以验证输入,而不是假设它总是正确的.您可以跟踪获取值的次数.

最重要的是,这是一个很好的设计.它为您,班级的开发人员提供了对其使用方式的更多控制,以及更好的防止滥用,滥用或只是某人做错事的能力.

推荐阅读
jerry613
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有