- 主题:请教:get set
在类的操作中,经常把属性或变量之类的设为private,然后又通过什么get set来操作,说是为了数据安全
这一点一直不能理解,人家调用get set不是一样的操作,这跟直接操作变量有什么区别?
加了一个函数调用get set就安全了?
一直觉得这就是脱裤子放屁,虽然也用过Cpp好多年,一直都是半桶水,很多特性都很排斥,不想用它
C代码,有很多也是,变量在文件中设为static,然后又给出一个get set给别的文件调用,
看到这种就生气,直接给个全局变量,直接操作变量不行吗?
--
FROM 210.13.96.*
你看到的都是简单的setter/getter实现吧
有的setter/getter可以复杂一些,比如触发一些事件等等。
【 在 futureking 的大作中提到: 】
: 在类的操作中,经常把属性或变量之类的设为private,然后又通过什么get set来操作,说是为了数据安全
: 这一点一直不能理解,人家调用get set不是一样的操作,这跟直接操作变量有什么区别?
: 加了一个函数调用get set就安全了?
: ...................
--
FROM 221.220.168.*
这样就合理了
那有些简单的get set是为了预留等着扩充吗?
【 在 z16166 的大作中提到: 】
: 你看到的都是简单的setter/getter实现吧
: 有的setter/getter可以复杂一些,比如触发一些事件等等。
:
--
FROM 210.13.96.*
为啥要预留
setter/getter其实是越简单越好吧,避免unexpected"惊喜"
【 在 futureking 的大作中提到: 】
: 这样就合理了
: 那有些简单的get set是为了预留等着扩充吗?
:
--
FROM 221.220.168.*
【 在 futureking 的大作中提到: 】
: 这样就合理了
: 那有些简单的get set是为了预留等着扩充吗?
:
有的是为了给扩展提供接口
有的是为了隔离将来可能的变动
通过getter/setter的接口形式,耦合一般会比直接使用数据要低
不过因为也有很多的getter/setter就是trivial的数据存取,所以c#才搞出来一个property的默认实现
--
FROM 211.145.67.*
万一某天要用string类型了,原来的int类型都得完蛋。
调用get set的至少在函数里面做一下转换能保证原来对外接口不变。
设计原则多是从开发api和框架层面考虑的,重视稳定而不是应用层的快糙懵。
【 在 futureking 的大作中提到: 】
: 在类的操作中,经常把属性或变量之类的设为private,然后又通过什么get set来操作,说是为了数据安全
: 这一点一直不能理解,人家调用get set不是一样的操作,这跟直接操作变量有什么区别?
: 加了一个函数调用get set就安全了?
: ...................
--
FROM 112.96.48.*
LZ要是知道C#里面语法自带GET SET不得疯了~~~
--
FROM 39.144.4.*
get/set具有拦截操作的能力。
比如可以做数据的校验,并发的控制。
如果看的更长远,会发现有get/set以后重构很方便。通过修改get/set的实现做到重构自己而不影响外部使用。
【 在 futureking 的大作中提到: 】
: 在类的操作中,经常把属性或变量之类的设为private,然后又通过什么get set来操作,说是为了数据安全
: 这一点一直不能理解,人家调用get set不是一样的操作,这跟直接操作变量有什么区别?
: 加了一个函数调用get set就安全了?
: 一直觉得这就是脱裤子放屁,虽然也用过
: ..................
发自「今日水木 on Android」
--
FROM 114.254.2.*
是的,作为数据访问的入口。
【 在 wudashu 的大作中提到: 】
: get/set具有拦截操作的能力。
: 比如可以做数据的校验,并发的控制。
: 如果看的更长远,会发现有get/set以后重构很方便。通过修改get/set的实现做到重构自己而不影响外部使用。
: ...................
--
FROM 221.222.21.*
说明你还不理解c++的封装特性(encapsulation),就是说只要getter、setter的interface写好了,里面的细节不需要操心。
【 在 futureking 的大作中提到: 】
: 在类的操作中,经常把属性或变量之类的设为private,然后又通过什么get set来操作,说是为了数据安全
: 这一点一直不能理解,人家调用get set不是一样的操作,这跟直接操作变量有什么区别?
: 加了一个函数调用get set就安全了?
: ...................
--
FROM 216.240.30.*