![]() |
1
13
根据许多巧妙的评论进行编辑: 至于类本身使用setter和getter,这可能取决于具体情况。毕竟,特定类的实现对类本身是可用的。在一个类通常被实例化的情况下,该类应该直接为它自己的成员(private或other)和它的父类(如果它们受到保护)使用成员值,并且只在这些成员对父类私有的情况下使用getter/setter。 在抽象类型的情况下,它通常根本不包含任何实现,它应该提供纯虚拟的getter和setter,并且只使用它实现的方法中的那些。 |
![]() |
2
12
愿意在类成员实现中使用getters/setter的意愿是矿中的金丝雀,它告诉我们你的类正在不合理地增长。它表明你的类正在尝试做太多不同的事情,它在它应该服务的几个方面起到了作用 一 相反。 事实上,当您使用类的一部分来存储或访问数据,而另一部分用于对其进行操作时,通常会遇到这种情况。也许您应该考虑使用一个独立的类来存储和访问您的数据,而另一个类可以提供更高的视图,对您的数据进行更复杂的操作。 |
![]() |
3
9
显而易见的
私人成员的getter和setters很少是净收益,但是:
|
![]() |
4
5
似乎大多数人都没有正确地阅读你的问题,问题是关于是否 类方法访问自己类的成员 我不会费心使用getter和setter来访问类自己的成员。 但是,我也保持类很小(通常大约200-500行),这样如果我确实需要更改字段或更改其实现或它们的计算方式,那么搜索和替换就不会是太多的工作(事实上,我经常在早期开发阶段更改变量/类/函数名称,我很挑剔名称选择器)。 我只使用getter和setter来访问我自己的类成员,当我希望在不久的将来更改实现时(例如,如果我正在编写一个可以快速编写的次优代码,但计划在将来对其进行优化),这可能会从根本上改变所使用的数据结构。相反,在我有计划之前,我不会使用getter和setter;尤其是,我不使用getter和setter来期望改变一些我很可能永远都不会改变的事情。
但是对于外部接口,我严格遵守公共接口;所有变量都是私有的,我避免使用
|
![]() |
5
4
唯一的优点是它允许在不改变外部接口的情况下更改内部表示,允许延迟计算,或者为什么不允许访问计数。 根据我的经验,我这样做的次数非常非常少。看来你是这么想的,我也更喜欢避免那些笨重的家伙。如果我以后改变它并不难 需要它。 当您谈到一个类在它自己的实现函数中使用它自己的getter/setter时,您应该考虑在可能的情况下编写非友元非成员函数。如前所述,它们改进了封装 here |
![]() |
6
2
|
![]() |
7
2
只是个简单的例子。这有帮助吗?
编辑: 我要说这要看情况而定。如果getter执行某种类型的验证,则最好通过验证,即使这意味着类成员要接受该验证。另一种情况是,当访问需要以顺序和同步的方式(例如在多线程场景中)时,通过一个公共入口点可能会有帮助。 |
![]() |
8
2
这实际上是为了通过抽象get(getter)方法来支持类的面向对象性。提供更方便的访问。 |
![]() |
9
1
通过用get/set函数包装成员变量的访问来保护它有其优点。有一天,您可能希望使您的类线程安全—在这种情况下,您将感谢自己使用了那些get/set函数 |
![]() |
10
1
简单的回答。如果你在写一个一次性的程序,这是永远不会改变的,你可以让他们平静下来,什么都不用做。
如果使用getter,它有助于以后更快地更改代码,例如在属性上设置一个保护以验证值的正确性,或者计算对属性的访问(调试)。 对我来说,重要的是简单的可能性(免费午餐)。编写代码的程序员不需要getter,他需要getter。 希望有帮助。 |
![]() |
11
0
我的想法如下。
Setters/Getters的用法-通用。
|
![]() |
rookie · 检查函数模板的所有参数包参数是否属于int 1 年前 |
![]() |
ivaigult · -W转换和隐式字符串到布尔类型转换 1 年前 |
![]() |
rainer · 后台插入程序的初始化 1 年前 |
![]() |
Community wiki · 以理智、安全和高效的方式复制文件 1 年前 |
|
Shefali Kanaujia · 对C中向量的向量进行排序++ 1 年前 |
|
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |