- 论坛徽章:
- 0
|
本帖最后由 xhl 于 2011-12-04 16:42 编辑
回复 三月廿七
所以我只用一些子集啊,RAII(好东西),适当的虚函数(看需要,这个东西有ABI的 ...
walleeee 发表于 2011-12-04 16:19
-----------真不懂java或者c#这种语言为什么要把变量访问搞成受限的,然后又来一对get/set。有见解没?--------------
当初也跟你有类似的疑惑, 但随着做实际的东西多了, 才真正明白这样做的几点好处。
1. 避免一个共有成员变量被到处修改, 当你想下断点找是谁修改一个变量的时候, 当有get/set的时候非常方便, 断在这个函数内, 看callstack就可以了。
2. 有很多应用并不是简单的修改类的成员变量的数值, 他需要一定的规则, 举个例子, 当你想知道哪些变量在程序执行时候被修改, 哪些没被修改的时候, 你就需要有统一的地方做一个统一的标脏处理。 所以需要set/get函数。
3. 这个是很好的设计风格, 在多人开发, 多公司配合, 多模块库配合的项目里, 这样做虽然从个人开发角度讲, 显得麻烦, 但对于长期维护的大型项目来说, 利大于避, 主要的好处体现在长期维护, 后期修改。 如果你没get/set, 当应用这到处修改你的成员变量的时候, 几年后, 这代码基本无法维护。 也就是说当初实现这写了get/set不仅仅是为了实现功能, 还给自己将来维护留下一个入口。
要知道想得到任何好处都是有代价的。而且有些好处仅仅体现在很复杂的应用情况下, 在简单的模型下, 反倒显得多余。 |
|