工作一两年的程序员们也许都会有一种感觉,要完成一个模块,一个功能或是做出一个东西都不难,真正困扰我们的是怎么做好一个东西。
怎么算是做好呢,我觉得一个好的代码,除了有个好的规范,有好的算法,最重要的还是要有很好的可扩展性,面对不断变化的需求,不断增加的功能,
没有好的扩展性的代码,会让你感觉根本无从下手,经常会让你有重头写过的想法。所以一个好的设计很重要,但是很多的时候我们没有办法设计出一个完美的
作品,没有办法考虑到需求的所有变化方向,所以这个时候重构就很重要了。
其实很多人都知道重构的重要性,但是很多的时候我们面对成熟功能的一个产品往往很害怕去重构,害怕重构会带来新的问题,会引起大的麻烦。
所以很多的时候我们不应该等到产品做完后,发现无法扩展了才想到重构,而应该把重构带入开发的过程中,在完成有个小模块、小功能后都要想想是否存在缺陷的地方,
如果有就对这个模块的代码进行重构。以下是对需要重构地方的一些理解:
1:去处重复的代码--使修改更加容易。
2.重构难以修改的程序:(1)难以阅读的程序;(2)逻辑复杂的程序(3)添加新行为需要修改已有代码的程序;(4)带复杂条件逻辑的程序。
3.尽量少用实例变量和少传递多的参数,应该把多的参数写成对象,以对象的方式传递,这也使面向对象语言的重要思想。
4.少用switch语句,用多态的形势代替switch。
5.当看到一段过长的函数或一段需要注释的代码时,就应该把代码抽离出来写成独立的函数。
6.关于函数的重构:
(1)临时变量尽量只被赋值一次;
(2)以函数对象代替函数;
(3)以更简单的算法代替原来算法;
(4)用对象代替数组;
(5)用常量代替数字;
(6)封装字段:将公共字段封装成私有字段;
(7)引入参数对象:把一组相关联的数据参数封装成对象参数传递;