代码大全学习总结——重构
2012-06-13 21:15
399 查看
一、简单的知识答疑
what
引用Martin Fowler给出的官方解释:重构是在不改变软件外部行为的前提下,对其内部结构进行改变,使之更容易理解并便于修改。(请注意红色标注内容)
why
代码重复、程序太长、嵌套过深、参数太多、接口抽象不一致、变化导致多个地方同时修改...MS理由很多很多,其实说白了,当代码看不懂的时候,往往就预示着代码需要重构了。
how
数据级的重构->语句级的重构->子程序级的重构->类实现的重构->类接口的重构->系统级的重构。
做什么事情往往都是从简到难,从局部到整体,重构也一样,即然说的是对内部结构进行改变,那么最直接的修改就应该是从最里面开始。
二、“深刻”的体会
最近的重点工作就是某个模块的代码重构,以下就自身的亲历从反面来讲讲重构。
1. 吃着碗里,看着锅里
案例:改A处代码时,发现B处也不好,改B的时候又发现C也该动动了,接着改...一边串下来5、6个单元都折腾了一遍,心里还美滋滋的,但编译死活通不过,又牵扯其他单元,好像进入了无底洞一样,最后只好放弃...
总结:同一时间只做一项重构,当然必不是说就只关注一个,当又发现了其他需要重构的地方时,可以设置一个停车场,将它们找个地方集中停起来,最后再一个个修改;
2. 舍不得
案例:经过业务的重新分析,功能A已经不需要了,但自认为这个功能写不错,以后应该还会用到吧,给它找个归宿——扔到公共单元里吧,我也“超前设计”一把;
总结:每增加一行代码,都意味着出错的可能性又提高了,竟然没有用,那留着只会是“画蛇添足”,增加了程序的复杂度。哥们儿,删了吧,果断!
重构是为了让更容易理解和修改,但也不要忘了质量才是最重要的,在重构前一定先确认好测试方案,保证重构不影响软件外部行为。说起来还挺有意思,这个模块以前已经进行了一次大的重构,但是现在又被“逼”到了重构的边缘。程序总是越来越复杂的,重构出错的概率也是越来越大的,安全的重构才是真正的重构。
what
引用Martin Fowler给出的官方解释:重构是在不改变软件外部行为的前提下,对其内部结构进行改变,使之更容易理解并便于修改。(请注意红色标注内容)
why
代码重复、程序太长、嵌套过深、参数太多、接口抽象不一致、变化导致多个地方同时修改...MS理由很多很多,其实说白了,当代码看不懂的时候,往往就预示着代码需要重构了。
how
数据级的重构->语句级的重构->子程序级的重构->类实现的重构->类接口的重构->系统级的重构。
做什么事情往往都是从简到难,从局部到整体,重构也一样,即然说的是对内部结构进行改变,那么最直接的修改就应该是从最里面开始。
二、“深刻”的体会
最近的重点工作就是某个模块的代码重构,以下就自身的亲历从反面来讲讲重构。
1. 吃着碗里,看着锅里
案例:改A处代码时,发现B处也不好,改B的时候又发现C也该动动了,接着改...一边串下来5、6个单元都折腾了一遍,心里还美滋滋的,但编译死活通不过,又牵扯其他单元,好像进入了无底洞一样,最后只好放弃...
总结:同一时间只做一项重构,当然必不是说就只关注一个,当又发现了其他需要重构的地方时,可以设置一个停车场,将它们找个地方集中停起来,最后再一个个修改;
2. 舍不得
案例:经过业务的重新分析,功能A已经不需要了,但自认为这个功能写不错,以后应该还会用到吧,给它找个归宿——扔到公共单元里吧,我也“超前设计”一把;
总结:每增加一行代码,都意味着出错的可能性又提高了,竟然没有用,那留着只会是“画蛇添足”,增加了程序的复杂度。哥们儿,删了吧,果断!
重构是为了让更容易理解和修改,但也不要忘了质量才是最重要的,在重构前一定先确认好测试方案,保证重构不影响软件外部行为。说起来还挺有意思,这个模块以前已经进行了一次大的重构,但是现在又被“逼”到了重构的边缘。程序总是越来越复杂的,重构出错的概率也是越来越大的,安全的重构才是真正的重构。
相关文章推荐
- 代码大全学习总结——防御式编程
- 代码重构---代码大全学习系列--未完成
- 代码大全学习总结——伪代码编程
- 代码大全学习总结——直线型代码、条件语句
- 代码大全学习总结——表驱动法
- 代码大全学习总结——一般控制问题
- SQLite 锁机制学习总结 锁状态转换及锁机制实现代码分析
- node.js学习总结之调式代码的方法
- Android代码重构总结
- Mysql学习总结(55)——MySQL 语句大全再温习
- 代码大全-创建子程序的理由总结
- Jquery学习总结(4)——高效Web开发的10个jQuery代码片段
- 步步为营 .NET 代码重构学习笔记 三、临时变量(Temporary Variable)
- GDI+学习及代码总结之------区域
- 第十周代码学习总结
- 代码大全学习-9
- php学习第二天:代码重构
- 代码大全学习-11-防御式编程(Defensive Programming)
- Jmeter测试框架学习总结之代码分析
- Java基础学习总结(72)——提升 java 代码的运行效率