数据封装,是否容易导致封装过度?大神们怎么看

flying_music 2016-04-21 09:13:06
尤其是类中指针的使用,一个类A里有一个类B指针,这个类B里又有一个类C指针……

这样好处是可以增加间接性,每一层只负责当前的数据,底层的数据通过调用下面的函数来访问。还可以分离编译等等

但这样一来,上面只要访问底层数据,就要在每层写一个函数来完成,也很费劲啊,这是不是过度封装了啊

有类似经验的大神,这种情况怎么处理啊?
...全文
464 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
flying_music 2016-04-23
  • 打赏
  • 举报
回复
引用 9 楼 zhao4zhong1 的回复:
现实社会封装过度的时候就需要精兵简政。
这个度很难把握啊大神,好迷茫的感觉
jiqiang01234 2016-04-22
  • 打赏
  • 举报
回复
这是设计问题,为什么A要通过B直接访问C的指针,这本身就说明了问题。不是简单的过度封装的问题
赵4老师 2016-04-22
  • 打赏
  • 举报
回复
请牢记:源代码本身的书写是否结构化或面向对象或符合设计模式或敏捷…并不重要,重要的是你是否使用结构化或面向对象或符合设计模式或敏捷…的方法命名标识符、阅读、修改、检查、测试源代码。 意思是你程序结构看上去再合理,再简洁,也不一定比看上去一团乱麻的程序结构在运行或修改时更不易出错,更方便修改,出错了更容易找到哪里出错和具体出错的原因,更容易改正错误。 试对比 图书馆(对图书的分类够结构化了吧) 和 搜索引擎(可看作是扁平化任何结构数据,仅支持全文检索) 哪个处理信息更方便、更高效。 所以 与其费劲去重构代码让其看上去更简洁、更合理 不如费劲学习grep、sed、awk、……这类全文搜索和批处理编辑的工具。 结构越复杂,越难修改,越难除错。 有时(甚至大多数时候),看上去越合理、越简洁的代码,运行起来性能越差,出错时查找原因越难,找到出错原因后改正越费劲。 程序员要做的不是尽力避免错误,而是聚焦在快速发现并改正错误。真正以快速方式轻易解决错误,“快速的失败”远胜过“预防错误”。Fred George 前微软C#编辑器的开发主管Jay Bazuzi列出的一些有助于找到正确方向的问题;他觉得前同事们应该用这些问题来问自己;实际上不管在哪里工作的开发者们都应该经常问问自己这些问题: ◆“要保证这个问题不会再出现,我该怎么做?” ◆“要想少出些Bug,我该怎么做?” ◆“要保证Bug容易被修复,我该怎么做?” ◆“要保持对变化的快速响应,我该怎么做?” ◆“要保证我的软件的运行速度,我该怎么做?” 如果大多数团队都能不时问一下自己,必定会从中得益,因为这些都是真正强而有力的问题。
lm_whales 2016-04-22
  • 打赏
  • 举报
回复
引用 4 楼 cyfcsd 的回复:
[quote=引用 2 楼 lm_whales 的回复:] 还有一种方法,就是类似智能指针的方法 其他,例如接口类方法 方法可多了 根据需要处理
那个接口类方法我是不太明白,为什么要把接口放到一个所谓的接口类里呢? 直接放一个实现类的指针过去不就行了吗,用指针就可以访问实现类里面的方法啊 这样无论实现类里的数据怎么改都不影啊,为什么中间要加一层类封装呢 [/quote] 要考虑修改方便 最好能够单独编译 甚至在线升级 这是现实需要 如果没有这些需要,直接编写的话 这些技巧,都是多余的 代码越简单越好,但是现实世界是负责的 需求是复杂的 越是简单的代码,越要考虑复杂的情况 太简单了实际上, 要不什么也做不了 要不没法修改,出现变化,就要从头再来
flying_music 2016-04-22
  • 打赏
  • 举报
回复
引用 2 楼 lm_whales 的回复:
还有一种方法,就是类似智能指针的方法 其他,例如接口类方法 方法可多了 根据需要处理
那个接口类方法我是不太明白,为什么要把接口放到一个所谓的接口类里呢? 直接放一个实现类的指针过去不就行了吗,用指针就可以访问实现类里面的方法啊 这样无论实现类里的数据怎么改都不影啊,为什么中间要加一层类封装呢
flying_music 2016-04-22
  • 打赏
  • 举报
回复
引用 1 楼 lianshaohua 的回复:
建议从业务角度、需求角度等来考虑,单纯这样做意义不大。
有道理啊,得根据需求来定程序的结构啊,我算知道为什么程序员最怕改需求了。。。
小灸舞 2016-04-22
  • 打赏
  • 举报
回复
世间万物都是封装呈现给我们的
赵4老师 2016-04-22
  • 打赏
  • 举报
回复
现实社会封装过度的时候就需要精兵简政。
lm_whales 2016-04-21
  • 打赏
  • 举报
回复
还有一种方法,就是类似智能指针的方法 其他,例如接口类方法 方法可多了 根据需要处理
ztenv 版主 2016-04-21
  • 打赏
  • 举报
回复
建议从业务角度、需求角度等来考虑,单纯这样做意义不大。

64,282

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧