用JBuilder 2005实现重构之认识重构

原创 2005年03月02日 11:27:00

开发者网络 > 开发工具 > Java > 正文

  为什么要重构

  从Martin Fowler所著的《重构--改善既有代码的设计》一书连续两年成为最畅销的计算机图书之一,就可以知道重构给程序员所带来的欣喜程度了。

  那么什么是重构呢?重构就是在不改变软件现有功能的基础上,通过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性。

  也许有人会问,为什么不在项目开始时多花些时间把设计做好,而要以后花时间来重构呢?要知道一个完美得可以预见未来任何变化的设计,或一个灵活得可以容纳任何扩展的设计是不存在的。系统设计人员对即将着手的项目往往只能从大方向予以把控,而无法知道每个细枝末节,其次永远不变的就是变化,提出需求的用户往往要在软件成型后,始才开始"品头论足",系统设计人员毕竟不是先知先觉的神仙,功能的变化导致设计的调整再所难免。所以"测试为先,持续重构"作为良好开发习惯被越来越多的人所采纳,测试和重构像黄河的护堤,成为保证软件质量的法宝。

  通过重构可以达到以下的目标:

  ·持续偏纠和改进软件设计

  重构和设计是相辅相成的,它和设计彼此互补。有了重构,你仍然必须做预先的设计,但是不必是最优的设计,只需要一个合理的解决方案就够了,如果没有重构、程序设计会逐渐腐败变质,愈来愈像断线的风筝,脱缰的野马无法控制。重构其实就是整理代码,让所有带着发散倾向的代码回归本位。

  ·使代码更易为人所理解

  Martin Flower在《重构》中有一句经典的话:"任何一个傻瓜都能写出计算机可以理解的程序,只有写出人类容易理解的程序才是优秀的程序员。"对此,笔者感触很深,有些程序员总是能够快速编写出可运行的代码,但代码中晦涩的命名使人晕眩得需要紧握坐椅扶手,试想一个新兵到来接手这样的代码他会不会想当逃兵呢?

  软件的生命周期往往需要多批程序员来维护,我们往往忽略了这些后来人。为了使代码容易被他人理解,需要在实现软件功能时做许多额外的事件,如清晰的排版布局,简明扼要的注释,其中命名也是一个重要的方面。一个很好的办法就是采用暗喻命名,即以对象实现的功能的依据,用形象化或拟人化的手法进行命名,一个很好的态度就是将每个代码元素像新生儿一样命名,也许笔者有点命名偏执狂的倾向,如能荣此雅号,将深以此为幸。


  全文阅读用JBuilder 2005实现重构之认识重构

Generic Programming: Mappings between Types and Values

Generic: Mappings between Types and ValuesAndrei Alexandrescu前言    Andrei Alexandrescu的文章不用我说了吧,经典!由...
  • winmain
  • winmain
  • 2001-11-26 10:02:00
  • 811

用Div+CSS重构网页

从接触WEB标准以来,一直在努力实践,近日官方网站的全面改造终于正式展开,由于网站管理系统的WYSWYG编辑器本身不支持WEB规范,也是没办法的事情,但是我还是决定在这次改版的过程要充分利用CSS,在...
  • loyos
  • loyos
  • 2006-07-25 17:35:00
  • 905

在C++中的进行重构

在C++中的进行重构   最近在修改一个项目,C++的一个服务器端的程序。它用来连接两种终端一种是发起终端一种是被控终端。以前只支持一个发起终端,现在需要将其改成能够支持多个发起终端的情况,当看了程序...
  • HotWu
  • HotWu
  • 2005-07-27 02:19:00
  • 2487

重构网络:SDN架构与实现pdf

  • 2017年11月29日 17:51
  • 58.53MB
  • 下载

数据结构与算法学习笔记——二叉树重构(递归)

关于二叉树的另外一个重要内容就二叉树的重构,二叉树的重构就是根据已知的二叉树前序,中序,后续遍历的数组重新构造出园二叉树。 对于普通的二叉树可以由 前序遍历+中序遍历 或者 后序遍历+中序遍历 重构...
  • wangbingcsu
  • wangbingcsu
  • 2015-10-26 22:38:11
  • 2266

重构网络 SDN架构与实现

  • 2017年11月22日 11:37
  • 58.53MB
  • 下载

【SSH进阶之路】一步步重构容器实现Spring框架——从一个简单的容器开始(八)

最近一直在和容器打交道,甚至前面的博文,我们也介绍了Spring的IoC的原理以及源码,但是回头看看,介绍的还是深了,不够通俗易懂,深入浅出。从这篇博文开始,一步步的重构,最后实现一个基本的Sprin...
  • jiuqiyuliang
  • jiuqiyuliang
  • 2015-03-09 08:30:01
  • 7362

用vue.js和vue-router重构一个网站

拿了个以前的项目做练手,主要用了vue-cli,vue-router github地址:https://github.com/fshwc/vuedemo-mpacc...
  • weixin_35987513
  • weixin_35987513
  • 2017-01-25 16:10:11
  • 2532

JBuilder 2005 Enterprise注册破解

JBuilder 2005 Enterprise注册破解 JBuilder 2005 Enterprise安装结束,安装文件中提供了破解文件shock.jar。 此注册文件使用方法: 运行注册文件前不...
  • wangpancom
  • wangpancom
  • 2006-11-27 11:25:00
  • 793

混沌时间序列处理之第一步:相空间重构方法综述

  • 2009年10月09日 00:01
  • 323KB
  • 下载
收藏助手
不良信息举报
您举报文章:用JBuilder 2005实现重构之认识重构
举报原因:
原因补充:

(最多只允许输入30个字)