返回首页

大家好,

我有一个疑问,有关成员variable.Why我们保持成员

私人和通过get属性,它提供输出变量。

感谢在前进。产品库2:OriginalGriff

回答

评论会员:游客 时间:2012/02/07
它的用途之一是控制该成员变量的访问,并有一个事件的时候。任何人读取它的值(和你可能会改变其真正的价值,并返回另一件事,或你可能更新一些对象的内部状态)
|塞巴斯蒂安Gruchacz:这不是必需的(而被认为是一个"坏作风"),直到:

你需要使这个成员只读
2。您正在实现特定的接口,需要等财产
存在3。你刚才藏身的确切方法,计算结果不直接存储在该领域,但其他属性或成员获得,并提出作为财产得到更好的"真实"的方法区分的价值。
4。你wan't请求时作出以上只计算。 OFC。有很多原因,而不是使用方法...
5。你想,以提供额外的逻辑,当有人修改成员的价值 - 就像抛出一个事件或验证的数据是正确的,或释放一些相关的资源类...或任何其他...
6。其他的想法?我以为可以找到几个{S0的}

一般来说,这是八九​​不离十确定使用公共领域(但名称,如将拥有房产的,所以"身份证"不"的_id")时,这仅仅是一些值存储。转变成物业时,需要一些额外的逻辑,将不影响使用它的代码(当然,直到你限制访问成员...)

关于
SEB
评论会员:,西奥采购 时间:2012/02/07
。如果你想隐藏你需要创建了坚实​​的接口成员函数的类的对象的内部结构

如果您这样做,你可以很容易地改变成员的执行情况,不干扰任何现有链接到该对象。你有比只改变一个成员函数的内部,但现有的接口。

记住,你也可以用在你的类的接口成员,这也使执行一个复杂的类维护。例如:一个构造函数,调用初始化和析构函数被调用的接口关闭对象的接口。当心不叫内部构造的虚拟成员。Stefan_Lang:主要的原因是,设计师通常会在心中为他设计一个类的每个成员的特殊用途,但目的往往是不明确,在第一实施类。更重要的是,这个目的可能不被传达给别人不够好。

如果一个成员变量被公开宣布,但它的目的不明确,那么其他开发商可以编写代码,使用或改变他们在不恰当的方式,不知道。因此,任何后来澄清,这个变量的目的将是很难解决,因为整个代码库访问该变量的代码搜索。

使用get和set方法,让你以后添加约束,而不必理会别人谁已经访问成员变量在他们的代码。你只需要添加额外的测试,断言,或在你的getter和setter方法​​的转换,使不适当的访问已不再可能,或至少会引发一个可见的错误,你可以修复。

对于这项工作,成员变量必须从一开始就宣布私人权利,即使intially有没有这样做545的优势。这就是为什么大多数开发商认为这是一个很好的做法,始终声明成员变量私有(或保护)和使用getter / setter方法​​,而不是让它们公开。

退房的原因其他的解决方案,当你想使用的setter / getter方法​​。所有这些都是有效的。但正如我所说,主要的一点是可能原因后,你可能会发现,而不是一个实际的存在。

主要有两个原因,为什么人们不希望这样,但两者都是错误的:
1。添加getter和setter方法​​以及调用它们(至少增加())的成本,这个成本始终是微不足道的codebase休息,现代编辑减少到最低限度打字的开销

2。添加了一个间接层来访问成员变量的性能成本:同样,这个成本几乎总是琐碎。性能是当应用程序实际运行的性能被认为是一个实际问题,即使在当时,应使用合适的工具,以找出真正的瓶颈,而不是乱撞时,只应考虑应用程序的属性。

即使后来变成直接访问一个特定的成员变量是必要的,不断变化的函数调用来直接访问,只需要一个简单的查找/替换。 OTOH,现有的公共成员变量变成一个属性需要很多的工作,这是尤其如此,当你这样做是有原因的,我这。 E。你放置一个限制,现在要检查每一个已经存在的访问,看它是否得当! !