代码重构系列一

来源:互联网 发布:中国期刊网数据库 编辑:程序博客网 时间:2024/04/28 05:56

笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,国家专利发明人;已出版书籍:《手把手教你架构3D游戏引擎》电子工业出版社和《Unity3D实战核心技术详解》电子工业出版社等。

CSDN视频网址:http://edu.csdn.net/lecturer/144

关于重构很多人只是听说过,并不知道该如何做?网上很多人也问过我,虽然有些人在项目中不自觉的就能用到,但是我们做事情还是需要理论联系实际,在这里通过博客的方式,把我关于对重构的理解和在项目中的使用方式给大家分享一下:

在项目开发中,对代码经常做的事情是重构,在我的团队中,我经常审核团队写的代码并对他们的代码进行重构,什么是重构?重构是这样一个过程,在不改变代码外在行为的前提下,对代码做出修改,以改进程序的内部结构。通俗的点说,重构就是在代码写好之后改进它的设计。

虽然我们提出了重构的思想,很多开发者虽然也经常口头说重构,但是面对代码不知所措,什么情况下需要对代码进行重构?在游戏开发中,需求是经常变化的。如果你发现自己需要为程序添加一个特性,而现有的代码结构使你无法很方便地达成目的,那就先重构那个程序,使特性的添加比较容易进行,然后再添加特性。

面对需要重构的代码,第一步是首先通过测试源程序搞清楚它的测试环境,这样我们把代码重构好了后,在测试方面能够做到与源程序相同,避免再测试时遗留某些功能。如果重构后的代码功能不如重构前的代码,还不如不重构,因为你的重构破坏了以前的功能完整性。

游戏团队开发是一个集体项目,程序的编写也是一样的,不同程序员编写的代码需要不同的人去维护,如果你写的代码别人看不懂是一件很头疼的事情,有时程序员有一个误区就是感觉自己写的代码别人看不懂,显的自己高大上,其实这个完全是错误的,真正的高手写的代码都是通俗易懂的。要想自己写的代码别人都能看懂,在编码规范上都要按照命名规范去做,变量的命名和函数的命名都要见名知意,看到这个函数的名字或者变量的名字就知道它代表的是什么功能或者起到什么作用。代码要表现自己的目的,这一点是最重要的。

在这里给开发者建议,我们经常使用if else或者switch去做条件分支,if else一般不会超过4个,switch如果使用太多的话可以考虑使用State状态模式替换。

重构代码的目的不只是限于整理代码,重构的目的是使软件更容易被理解和修改,游戏需求的变化通过我们重构后的代码能够快速的响应,当然感这些需求的变化不能影响到基本框架,否则只能重新编写。重构后的代码不会改变软件的行为,换句话说就是使用的人感觉不到你对代码进行重构。

程序员都有一个通病就是先把功能实现出来,而且使快速的实现出来。代码都是功能堆积出来的,毫无架构可言,只是为了短期目标,没有去做长远规划。面对这种情况,很多人就是不加思索开始重构代码,这是重构的大忌,重构代码必须要把整个模块搞清楚才能去做重构。而且我们还要经常性的重构这样可以帮助代码维持自己该有的形态。大家可以自己想想,比如我们实现一个功能,没有经验的程序员可能要写很多代码才能把功能实现出来,有经验的程序可能用比较少的代码即可完成功能需求。没有经验的程序员,对于重复的代码在项目中使用的非常多,这样一旦重复性功能需求变化,修改的代码非常多。代码重构的一个重要方向就是消除重复代码,在平时的开发中一旦遇到重复性代码就要考虑重构了。

代码重构的优点也有很多,可以帮助我们找到程序bug,因为要重构代码就必须要深入到代码里面,这样你就很容易发现问题。当然我们对待重构不要单独拿出时间做重构这件事,重构可以随时随地进行,之所以做重构是因为你想在代码中增加功能,但是当前的情况做不好,所以重构可以帮我们把想做的模块做好。

在此总结一下什么情况下去做重构:

1、难以阅读的程序,难以阅读的程序并不是说写程序的人水平高,必须重构

        2、逻辑重复的程序,重复的代码必须进行封装处理,这样的程序必须重构

3、添加新功能时,需要修改已有代码程序,不利于扩展的程序必须重构

4、条件复杂的逻辑程序,必须要重构。

对代码做重构设计也是要求自己养成一个好的习惯,这样才可以写出高质量的代码,后面的系列会结合着实际案例给读者分享。。。。。












0 0
原创粉丝点击