对重构的认识
来源:互联网 发布:福建师范大学网络 编辑:程序博客网 时间:2024/04/27 14:42
Martin Fowler的名著《重构》一书中,他把重构定义为:”在不改变代码外在行为的前提下对代码做出修改,以改进代码的内部结构的过程。”
重构自己代码的目的是让自己的代码能够更好的阅读,也为自己的后期维护带来极大的方便,更有利于团队成员之间的协同工作。
Visual Studio 为程序员提供了“重命名、提取方法、封装字段、提取接口、将局部变量提升为参数、移除参数、重新排序参数”这几种重构方式。就拿提取方法来说,这和复制代码段之后,再写个方法体将其粘贴进去相比,倒方便了不少。
下面看一个示例:
简单的冒泡排序:
- public static void Sort(int[] arr)
- {
- int i, j, temp;
- bool done = false;
- j = 1;
- while ((j < arr.Length) && (!done))//判断长度
- {
- done = true;
- for (i = 0; i < arr.Length - j; i++)
- {
- if (arr[i] > arr[i + 1])
- {
- done = false;
- temp = arr[i];
- arr[i] = arr[i + 1];//交换数据
- arr[i + 1] = temp;
- }
- }
- j++;
- }
- }
简单重构之后:
- public static void Sort(int[] arr)
- {
- int i, j;
- bool done = false;
- j = 1;
- while ((j < arr.Length) && (!done))//判断长度
- {
- done = true;
- for (i = 0; i < arr.Length - j; i++)
- {
- if (arr[i] > arr[i + 1])
- {
- done = false;
- Swap(ref arr[i],ref arr[i+1]);
- }
- }
- j++;
- }
- }
- /// <summary>
- /// 交换两个变量的值
- /// </summary>
- /// <param name="m">第一个变量</param>
- /// <param name="n">第二个变量</param>
- private static void Swap(ref int m, ref int n)
- {
- int temp;
- temp = m;
- m = n;
- n = temp;
- }
Bob大叔的比喻非常好:
重构就好比用餐后对厨房的清理工作。第一次你没有清理它,你用餐是会快一点。但是由于没有对盘碟和用餐环境进行清洁,第二天做准备工作的时间就要更长一点。这会再一次促使你放弃清洁工作。的确,如果跳过清洁工作,你今天总是能够很快的用完餐,但是脏乱在一天天地积累。最终,你得花费大量的时间去寻找合适的烹饪器具,凿去盘碟上已经干硬的食物残余,并把它们洗擦干净以使它们适合于烹饪。饭是天天要吃的。忽略掉清洁工作并不能真正加快做饭速度。
- 对重构的认识
- 重构的简单认识
- 【机房C#重构】对项目开发步骤的系统认识
- 软件重构的简单认识
- 重新认识重构的意义
- 对于代码重构的一点认识
- 重构之美-走在Web标准化设计的路上[对HTML/XHTML/XML/XSL的一些认识]
- Part0:认识重构
- 对重构的理解
- 对重构的理解
- 对重构的理解
- 对C++析构函数的认识
- 对句柄的认识
- 对句柄的认识
- 对句柄的认识
- 对句柄的认识
- 对暂存器的认识
- 对const的认识
- 一个利用google文档快速解决docx向doc转换的问题
- java application与java applet的区别
- Java Stream流的概念【转】
- 经历就是财富 (9月25日)
- 顺序表的C语言实现
- 对重构的认识
- 系统架构师的职责
- 单链表的C语言实现
- 经历就是财富(9.25)
- 为了简历
- Servlet与JSP路径问题
- 如何实现DES算法
- servlet和jsp路径
- JSP和SERVLET+WEB.XML