代码重构:全局数据
【摘要】 代码重构:全局数据
什么是全局数据(Global Data)
-
-
影响:可以在任何位置进行修改,在使用过程中可能出现意想不到的值,并且没有任何机制可以探测出哪段代码进行了修改,导致定位困难
-
改进目标:降低代码耦合性,保持代码清晰,维护简单,降低由于对全局数据随意的改变引发bug的风险
-
方法:封装变量,提炼函数
代码案例:类的静态属性
代码背景
-
ClassStudentsInfo类有两个public静态变量,classStudentsInfo用于存放班级和学生信息;classNumUpLimit用于保存班级的数量上限
-
ClassManage类主要是用于管理班级信息;
症状/问题
-
虽然我们的意图是想要通过ClassManage类来对这两个变量进行统一管理,但是由于是全局变量,我们可以在系统中的任何位置对其访问并修改。

坏味道影响
-
在main函数中无意间修改了全局变量classNumUplimit的值,这将导致后续添加操作失败。
-
在someProcess函数中本意是要调用局部变量classStudentInfo,由于和全局变量classStudentsInfo过于相似,无意间调用全局变量,最终导致了意想不到的错误。

-
封装变量

先把对全局变量的操作搬移到一个类中,然后把全局变量变为private,将对静态变量的访问都封装在一个类中,从而消除全局变量; 对于外部不需要访问的全局数据可以直接封装成private或常量。
总结

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:cloudbbs@huaweicloud.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
- 点赞
- 收藏
- 关注作者
评论(0)