听说在C ++中,在访问被定义为良好的编程实践同一类的成员函数使用访问(get...())?是不是真的和它应该做些什么呢?

例如,是该优选:

void display() {
    cout << getData();
}

过这样的:

void display() {
    cout << data;
}

data是其中定义存取同一类的数据成员...同样与display()方法。

我做这件事,特别是如果你需要调用访问很多次同一个类中,而不仅仅是直接使用数据成员的思维开销。

有帮助吗?

解决方案

这样做的原因是,如果你改变getData()的实施,你不会有改变直接访问data的代码的其余部分。

和也,一个聪明的编译器将内联反正(它总是知道在类中实现),所以没有性能损失。

其他提示

这取决于。使用访问函数提供了一个抽象层,其可以对“数据”痛苦少的未来变化。例如,如果你想懒洋洋地计算“数据”的价值,你可以隐藏在存取函数计算。

至于开销 - 如果你指的是性能开销,它很可能是微不足道的 - 你的访问者几乎肯定会被内联。如果你指的是编码开销,那么是的,这是一个权衡,你就必须决定是否值得额外的努力来提供存取。

就个人而言,我不认为访问器是值得的,在大多数情况下。

是的,我认为它应该做的事或多或少无条件。如果状态变量是在一些基础类,应该或多或少始终是私有的。如果你允许它被保护的或公共的,所有继承的将会的直接使用它。这些类反过来可能是你的同事都写在其他一些项目中的类。如果你突然决定在基类嘲笑约和重构,例如变量名的东西更合适的,该状态的所有用户必须被重写。

这可能不是一个问题,如果你是唯一的程序员或开发一些代码,没有人会用。但只要子类的数量开始增加,因此可能会真的有毛。爱是爱的透明度!

不过,我不是这个星球上最好的神子。有时候,我欺骗;)当你在主阶级的时候,我觉得它的确定直接访问私人数据。它甚至可能是有益的,因为你会自动知道你正在修改的实际类,你就能加入。既然你有某种命名约定,实际上告诉你的话,例如一些变量名与在端部的下划线:“someVariable _”

干杯!

好了,Khunt先生,开销是在大多数情况下存取真的微不足道。现在的问题是不是访问逻辑是否需要调用,或者您需要到外地的直接访问。这是每个人实现一个问题,但在许多情况下,不会有太大的差别。

有存取的真正原因是提供您的字段的封装到其它类 - 且小于约含类

个人而言,我不希望有几十个额外的功能(获取和每每个成员变量设置)。我只想用的数据的,并会改变的的getData()的仅在需要时以不同的方式做一些事情。因为我们只在一个课堂上说话有关更改代码的,它不应该是太困难了。

这要看你最终可能会与您的数据成员,我想这样做。

通过包装起来的访问,那么你可以不喜欢懒洋洋地检索数据的东西,如果这是一个昂贵的过程,而不是你想做的事,除非有人问这事。在另一方面,你可能知道,它永远是一个愚蠢的内置类型,所以我不能看到的通过访问那里发生的任何优势。正如我说,这取决于在所述构件上。

在我看来,这个问题的最重要的方面是它使代码更易读,因此维护?我个人不认为它,所以我不会这么做。结果 当然,你永远不应该添加一个私有访问只是为了做到这一点,那将是cnuts。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top