封装需要比公共变量更多的处理

时间:2013-08-02 21:58:48

标签: c# c++ class encapsulation

我习惯使用封装,无论如何,我的所有变量都是私有的 但是当我处理数千个具有数千个属性的实例时,我开始考虑优化,想知道封装的好处是否证明了性能损失(如果有的话)

我知道为什么要使用封装,但我要问的是:如果不需要使用封装,那么封装是否值得进行处理?它使用了多少?

2 个答案:

答案 0 :(得分:4)

我认为你错过了封装的重点。封装的要点是对象控制与其字段的ALL交互。从而统一实施业务逻辑并保护系统状态。鉴于您无论如何都必须运行业务逻辑......您不会仅通过使用数据对象来保存任何内容。

答案 1 :(得分:1)

你的第一选择应该是封装东西。大多数情况下,setter和getter函数应该内联。

所有你“失去”的是实际验证中涉及的任何额外逻辑所花费的时间,你没有设置无效值等等。但是你不想为了速度而错过它,你会?

所以,如果替代方法是写

if (x >= 0) obj.x = x; 

或     obj.setx(X); //其中setx检查x> = 0.

哪个更好?

如果系统有性能标准,那么基准测试。如果你符合标准,那很好。如果没有,找出瓶颈所在。但除非你的setter和getter函数是“正常”函数(也就是说,只是在检查后存储了值),否则它不应该成为瓶颈。典型的瓶颈是“算法选择不当”。