代码重构
酷鱼影子
我不是代码的生产者,我只是代码的搬运工
展开
-
使用Eclipse中提供的Refactor(重构)工具
1. Rename Rename重构的功能就是重命名Java元素。虽然可以通过手动修改文件的文件名或其它Java元素的名称,但这种方式不会更新与此Java元素相关联的引用,用户必须手动查找和此Java元素相关的位置,然后进行手动修改。通过手动修改名称的方式,造成笔误的可能性会太太增加。通过Eclipse提供的Rename的功能,Eclipse会自动完成更新相关引用的操作。当Java元素原创 2014-07-09 23:03:21 · 7394 阅读 · 0 评论 -
重构改善既有代码的设计--简化函数调用
前言:关于缩减参数列的重构手法,Doug Lea对我提出了一个警告:并发编程往往需要使用较长的参数列,因为这样你可以保证传递给函数的参数都是不可被修改的,例如内置型对象和值对象一定是不可变的。通常,你可以使用不可变对象取代这样的长参数列,但另一方面你也必须对此类重构保持谨慎。多年来,我一直坚守一个很有价值的习惯:明确地将“修改对象状态”的函数(修改函数)和“查询对象状态”的函数(查询函数)分开原创 2014-07-12 01:07:13 · 793 阅读 · 0 评论 -
重构改善既有代码的设计--简化条件表达式
1、Decompose Conditional(分解条件表达式)动机:你有一个复杂的条件(if-then-else)语句。做法:从if、then、else三个段落中分别提炼出独立函数。代码1:if(date.before(SUMMER_START) || date.after(SUMMER_END)) charge = quantity * _winter原创 2014-07-10 21:47:51 · 747 阅读 · 0 评论 -
重构改善既有代码的设计--重新组织数据
1、Self Encapsulate Field(自封装字段)动机:你直接访问一个字段,但与字段直接的耦合关系逐渐变得笨拙。做法:为这个字段建立取值/设置函数,并且只以这些函数来访问字段。2、Replace Data value with Object(以值对象取代数据值)动机:比如说电话号码,一开始你可能会用一个字符串来表示“电话号码”概念,但是随后你就会发现,电话号码需要”格式原创 2014-06-13 20:22:13 · 752 阅读 · 0 评论 -
重构改善既有代码的设计-处理概括关系
有一批重构手法专门用来处理类的概括关系,即继承关系。其中主要是将函数上下移动于继承体系之中。1、Pull Up Field(字段上移)两个子类拥有相同的字段。将该字段移至超类。2、Pull Up Method(函数上移)有些函数,在各个类中产生完全相同的结果。将该函数移至超类。3、Pull Up Constructor Body(构造函数本体上移)你在各个子类中拥有一些构造原创 2014-07-12 23:01:30 · 735 阅读 · 0 评论 -
重构改善既有代码的设计-- 重构原则
重构:对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本。为何重构:重构改进软件设计、重构使软件更容易理解、重构帮助找bug、重构提高编程速度何时重构:三次原则(三次再做类似的事)、添加功能时重构、修补错误时重构、复审代码时重构是什么让程序如此难以修改?四个原因:1、难以阅读的程序,难以修改;2、逻辑重复的程序,难以修改;3、添加原创 2014-05-26 21:39:39 · 1012 阅读 · 0 评论 -
重构改善既有代码的设计--重构第一个案例
1、将长的代码变短,将每个功能抽出来2、将变量名规范化,取个容易看懂的名字3、面向对象的原则,函数使用了来自哪类的信息,就应该放到那个类中。4、查询函数方法:将涉及到该变量的代码抽出成一个函数,在需要调用改变量的地方调用该函数即可。函数取代临时变量,减少了冗长复杂的函数。5、运用多态取代相关的条件逻辑。/** * * @author Administrator */原创 2014-03-25 22:27:23 · 954 阅读 · 0 评论 -
SourceMonitor: 代码重构的小工具,大用场
我们在做代码重构时,最麻烦的问题是什么?各人有各人的答案。对我来说,找到哪一段代码需要重构是最大的麻烦。产品写好了,程序怎么样?怎么判断?我的标准是,最复杂的代码就是最需要重构的代码。对于由整个团队写的代码,全面阅读是不太现实的。开会?程序员最最不喜欢开会了!那可是个技术活。:)最近,我用了一个小工具,SourceMonitor,取得了意想不到的好效果。推荐大家使用。 Source转载 2014-07-09 23:59:10 · 6140 阅读 · 0 评论 -
重构改善既有代码的设计--代码的坏味道
代码的坏味道1、Duplicated Code重复代码2、Long Method过长函数如果函数内有大量的参数和临时变量,它们会对你的函数提炼形成阻碍。如果你尝试运用Extract Method(提炼函数),最终就会把许多参数和临时变量当做参数,传递给提炼出来的新函数,导致可读性机会没有任何提升。此时,你可以经常运用Replace Temp with Query(查询取代临时变量)来消原创 2014-05-27 22:00:48 · 824 阅读 · 0 评论 -
重构改善既有代码的设计--在对象之间搬移特性
1、Move Method(搬移函数)动机:你的程序中,有个函数与其所驻类之外的另一个类进行更多交流:调用后者,或被后者调用。做法:在该函数最常饮用的类中建立一个有着类似行为的新函数。将旧函数变成一个单纯的委托函数,或是将旧函数完全移除。2、Move Field(搬移字段)动机:你的程序中,某个字段被其所驻类之外的另一个类更多地用到。3、Extract Class(提炼类)原创 2014-06-03 21:40:48 · 865 阅读 · 0 评论 -
重构改善既有代码的设计--重新组织函数
1、Extract Method (提炼函数)动机:你有一段代码可以被组织在一起并独立出来。做法:将这段代码放进一个独立函数中,并让函数名称解释该函数的用途。如下面的实例,提炼后的代码变得更清晰易读。提炼前代码:void printOwing(double previousAmount)){ Enumeration e = _orders.elemnets()原创 2014-06-03 20:40:12 · 771 阅读 · 0 评论