说说什么是重构(三)重构的结果

说到重构,大家自然而然会想到很多,不管是怎么开始的,也不管是怎么个重构的过程,到最后都会是两种结果,其一是,重构的很成功,冗余代码得到了简化,代码的可读性、可维护性也有了很大的提高。其二嘛,都能想的到,就是重构失败,这个失败的原因可能有很多。

背景

前两篇文章中,分别说明了重构的开始和重构的过程,至于重构的结果嘛,不用我说,大家也都可以想到有两种情况,成功和失败嘛。但是,为什么这里还是要说说结果呢,是因为,对于我来说,我认为,重构的结果固然重要,但是,在重构过程中,你学到的东西要比结果更重要。

感悟

今天的这篇文章,我不打算写所谓的正文,但是,我想通过自己的一点感悟来说说对重构的理解。

首先是起点

起点,是当我们闻到代码的“坏味道”,作为一个程序员自我认为的责任感,也可以说是自我修养,把“坏味道”剥离出来,重新设计、抽象、改变为整洁、优秀的代码。至于哪些是所谓的“坏味道”,这个在第一篇文章中已经有所涉及,这里就不再赘述。

我个人认为,找到起点并开始进行重构是很重要的事情,因为很多老的项目中,能够开始重构是鼓起了很大的勇气,除非老项目根本不能支持现在的需求,也会要求重构的。但是,我认为,前者的分险更大一些。

其次是过程

过程,是当我们开始了重构的第一步之后,就要考虑的问题。使用什么样的方法,能够对不同的问题,不同的冗余一 一解决。《重构》一书中也给了很详细的说明,甚至都给出了很多的方案,并给方案进行了命名。从这个过程中,我们尽量剥离业务相关的逻辑,抽象出公用的方法、类,尽量保持代码的唯一性和整洁性。在重构之时,尽量多考虑采用设计模式的方法进行解决。

从重构的过程中,我们可以看到腐败的代码,也可以修改为优秀的代码,然而对比这两者间的不同,就可以发现,好的代码是非常简洁的,多学习优秀的代码,可以使得我们能够提高自身的修养,不仅对开发、编码来说很重要,对于各个模块的设计也是很有必要的。

最后是结果

还是那句话,好的结果是我们所期盼的,如果因为各种原因导致失败,那么最起码在这个过程中,我们学到了很多。

结束语

其实,这三篇文章只是我对《重构》这本书的简单的理解,自己也重构了几个小模块,这其中有成功的,也有失败的,在这个过程当中,收获是巨大的,不仅仅在代码上,在设计上,在视野上也更加开阔了,更加认识到自己的渺小。

重构的结束,代表着另一个方向的开始,只有好的设计,基于全局的设计,才能结束重构的局面。

时间: 2024-07-30 04:35:13

说说什么是重构(三)重构的结果的相关文章

构建基于Javascript的移动CMS——生成博客(三).重构

当前墨颀CMS的一些基础功能设计已经接近尾声了,在完成博客的前两部分之后,我们需要对此进行一个简单的重构.为的是提取出其中的获取Blog内容的逻辑,于是经过一番努力之后,终于有了点小成果. 墨颀CMS 重构 我们想要的结果,便是可以直接初始化及渲染,即如下的结果: initialize: function(){ this.getBlog(); }, render: function(response){ var about = { about:aboutCMS, aboutcompany:url

重构学习-重构原则

什么是重构: 视上下文重构有两个不同的定义,第一个定义是名词形式 对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本 重构的另一人用法是动词形式 使用一系列的重构手法,在不改变软件可观察行为的前提下调整其结构. 有人说重构就是整理代码 ,从某种角度上来说,是,但是重构不止于此,因为它提供了一种更为高效且受控的代码整理 技术,运用代码重构技术后你会发现对代码的整理会比以前更加高效. 重构的目的是使软件更容易被理解和侯.你可以在软件的内部做很多修改,但必须

什么时候该重构--《重构》阅读笔记

当出现以下问题的时候,就要开始重构代码. 1)重复代码 重复代码在业务逻辑相同的地方,抽成方法.重复代码在业务逻辑不同的地方.抽成类. 2)long method 其实这个问题很多时候都碰到.我觉得原因主要还是两个.一个是修bug的时候,不敢改.因为这玩意,要改的话,压力还是很大的.还有一个写好之后,懒的改.这一种,特别实在这一次看书的过程中,觉得重构完全可以发生在刚写好代码的时候.因为我们写代码的时候,本能就是先实现功能.然后再考虑代码改如何组织. 3)large class 同上. 4)lo

从案例深入了解如何重构代码-重构计划

项目名称A,某公司重点项目,已经正式上线运行几年了,公司业务遍布全球,很多国家都有办事处或研发部门,也就需要使用该系统.并且随着公司的不断发展,业务流程也在不断地完善和变化. 技术上,项目是CS架构的,支持在线和离线两种操作方式,对于在线方式,数据访问是直连服务器上的Oracle数据库,离线的数据访问是连接本地的Access数据库;对于本地数据库,系统提供WebService来实现本地数据的同步. 目前项目代码的规模已经达到100多万行,负责项目开发和维护是由同一个团对来承担,其中的开发和设计人

机房重构---我们“重构”出了什么?

机房重构立即就要结束了,在这"第三个"系统结束的时候,有必要思考一下我们重构的目的了. 或许有人说,还有什么目的呀,不就是编程语言换成了.Net,做出来,调完bug,能执行就得了呗.这么浮夸的日子里,还叫什么劲啊? 对于有这样的想法的人,我必须道一声:您(白)辛苦了 ! 不管做什么事,没有一点总结性思考是无法进步的. 我以下的一些重构论述或者说反思性总结也存在很多不足,希望大家多多指正,在此先致谢! 本文将从五个方面论述一下这次的重构系统,各自是系统架构.UML图指导.设计模式应用.数

解析微服务架构(三):微服务重构应用及IBM解决方案

解析微服务架构系列文章将分几篇描述微服务的定义.特点.应用场景.企业集成架构的演进以及微服务转型思路和技术决策考虑等内容,并以IBM技术为例介绍如何实现微服务架构转型. 上一篇文章介绍了融入微服务的企业集成架构的演进,并介绍交互式系统的微服务模式及技术决策例子. 本篇文章将介绍已有IT应用如何进行微服务重构的转型,以及IBM微服务相关解决方案的介绍. 微服务转型 采用微服务架构意味着以更复杂的运维环境为代价,实现更高速的应用交付及更快推出市场.因此企业需要在更快的交付与更复杂的运维之间进行权衡.

关于重构(三)

今天不是太忙就索性将何为重构一并讲完!!! 上一节我们讲到,为何重构?重构的好处.优点? 我们接着将什么是重构? 其实这一解释应该放在最前面,其实从我们上学开始都是这么学习的,先说这是个什么东东,然后再去说这个东东的优点,为什么用它?为什么我没有这么做?因为我就想不按常理出牌(自己YY一下,其实自我感觉我们打破自己的习惯,尝试一种新的东西并不是一件坏事---当然我们尝试的东西是对的.正确的,那什么是正确的对的,我认为只要我们不去做违法乱纪的事,其他的事情我们都可以去尝试,闲话少扯开始正题). 什

《重构:改善既有代码的设计》读书笔记

??如果一个人没有听说过<重构>这本书,那么他一定不敢说自己是程序员:如果一个人没有阅读过<重构>这本书,那么很难想象他会是一名优秀的程序员.这本书是很多公司要求Java程序员必读的三本书之一(另外两本书是<Java编程思想>和<Effective Java>),其实无关编程语言,是程序员就能够从这本书中受益. ??何谓重构?重构是对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低修改成本.重构是用微小的步伐修改程序,在这个

使用React重构百度新闻webapp前端

http://wangfupeng.coding.me/share/2016/08/06/restruct-bdnews-webapp-by-react.html 声明 本文仅仅是对前几个月使用React重构百度新闻webapp项目的一个总结和思考,不会泄露任何项目代码(文章中的代码都是fis3或其他开源产品的配置代码,fis3是百度开源产品),因此“伸手党”可绕行. 现在2016年8月,web前端技术这几年变化太快,因此一些信息的时效性非常重要,还是把时间写上比较好. 项目介绍 百度新闻的 w

转有关代码重构

转自:http://blog.csdn.net/weiky626/article/details/1602691 开发人员可能听到过"bad smell"这个词,这个词用在软件编码中是什么意思呢? 代码还有smell吗?当然没有,正如计算机病毒,bug等词一样,这只是个形象的说法.这个词在这里的意思是代码实现了需求,但是代码却不精炼,冗余,结构混乱,难读懂,难维护,难扩展等等.与之相对应的一个词是"refactor",即代码重构.我们在看些外国人写的程序时可以发现,