代码重构总结

上传人:daj****de2 文档编号:122159871 上传时间:2022-07-20 格式:DOCX 页数:4 大小:13.41KB
收藏 版权申诉 举报 下载
代码重构总结_第1页
第1页 / 共4页
代码重构总结_第2页
第2页 / 共4页
代码重构总结_第3页
第3页 / 共4页
资源描述:

《代码重构总结》由会员分享,可在线阅读,更多相关《代码重构总结(4页珍藏版)》请在装配图网上搜索。

1、重构:对软件内部结构的一种调整,目的是在不改变软件之可察行为前提下,提高其理解性 降低其修改成本。组织方法:1 抽取方法创建一个新方法,命名以它做什么来命名,而不是怎么做来命名。Examplel示例2 方法内联 如果只是简单的委托,可以将方法内联。被子类继承的方法不能内联。Example2示例3 临时变量内联 如果一个临时变量只被简单的表达式赋值一次,就可以将它内联。如何判定只被赋值一次?将这个临时变量申明为final。 如果是被赋值为一个方法的返回值。一般情况不用内联,除非妨碍了其他重构方法。Example3 示例4 查询取代临时变量临时变量保存一个表达式的运算结果,可以抽取成一个独立方法(

2、称之为查询),来代替临 时变量。 Example4 示例5 引入解释性变量。 如果有一个复杂的表达式,可以将该表达式中复杂的部分用一个临时变量来显示。Example5 示例6 分解临时变量如果某个临时变量被赋值超过一次,而且它不是循环变量也不是表示一个整个方法都要使用 的值。可以将它分解成好几个临时变量。 Example6 示例7 去除对参数的赋值JAVA 中只采用值传递方式,因此对参数赋值会造成困惑。 JAVA 的方法参数表明被传递进 来的东西,可以让代码清晰。Example7示例8 方法对象取代方法如果某个对象的一个方法很长,拥有很多局部变量。可以新建一个对象,将这个长方法放入 新对象,将

3、方法的所有局部变量变成新对象的类变量。并且在这个类中将这个长方法分解成 很多小而短的方法。Example8 示例移动对象特性10 移动方法如果一个类中一个方法和另外一个类的调用,被调用更频繁,那么把这个方法放入另外那个 类中。 Examplel 示例11 移动类变量 如果一个类中一个类变量和另外一个类的调用,被调用更频繁,那么把这个类变量放入另外那个类中。Example2示例12 抽取类一个类做了两个类的工作。新建一个类,将原来类中某些类变量和方法移植到新类来Example3 示例13 内联类 加入一个类中特性太少,可以将它和另外一个类合并。 Example4 示例重组织数据22 对象取代数组

4、 如果一个数组中包含不同东西,则转化为对象。 Example1 示例26 替换魔法数用一个常量替代有特别含义的数字或者字符串变量。Example2示例27 封装类变量类变量最好不要设为public类型,设置为private,然后设置setter,getter方法为public Example3 示例28 封装集合类型集合类型的getter方法不要返回集合对象,这样可以修改集合对象内容而创建者一无所知。 所以确认 getter 方法返回的是不可更改的集合对象(只读),再增加对集合对象添加,删除 元素的方法。 Example4简化表达式34 分解表达式如果有一个复杂的 if, else 语句,可以

5、将各个条件执行的代码抽取成独立的方法。Example1 示例35 合并表达式如果有一些if语句返回结果相同,则可以用II和&将这些if合并成一个if语句。Example2 示例36 合并重复条件如果if和else语句中有相同重复的代码,请将这些代码移出if, else语句。Example3 示例37 去除控制标记if, else语句中如果某个变量有控制标记,用break或者return替代这个变量Example4 示例38 用检测语句代替嵌套条件如果If,else语句太多,则代码复杂度会很高,使用检测语句来替代,检测语句要么返回一个 实际的值,要么就抛出异常。Example5示例39 用多态代

6、替条件表达式。Switch case 表达式可以使用多态来替代。将包含switch case语句的方法转变成抽象方法,对于每个case,建立子类方法来实现。Example6 示例简化方法调用42 方法重命名 如果一个方法名字不能清晰表单含义,可以改成另外一个名字。 Example1 示例43 添加方法参数 往一个方法里添加参数。 必需注意的是,在添加之前想清楚是否真的是需要这个参数。 Example2 示例44 去除方法参数 把方法里不必要的参数去除掉。 Example3 示例45 将查询和修改分开根据单一职责原则,一个方法只能做一件事情,因此方法里既有返回查询数据又有对数据的 修改时候,我们

7、要将这个方法分成两个方法。 Example4 示例46 参数化方法 如果两个方法或者两段代码只有部分代码不同,大部分代码都相同。那么可以将这两个方法 或代码统一成一个方法,将不同部分作为统一方法的参数。 Example5 示例47 用明确方法代替参数如果某个方法中某个参数的每一个可能值都会有相应的操作。则应该针对每一种操作创建独 立的方法来实现。 Example6 示例48 保持对象完整 如果某一方法的几个参数都是同一个对象中的成员变量,则可以将这个对象作为方法参数传 入。优点:1. 这个对象中新增某一成员变量也需要作为参数传入这个方法,如果是用把对象作为参 数,则不需要更改这个方法的参数。否

8、则你要将这个方法的参数增加一个新的参数。2. 方法参数最好不要太多,使用这个重构操作就是为了减少方法的参数个数。 Example7 示例处理泛化57 上移类成员变量 如果一个类的两个子类中有相同的成员变量,则可以将这个成员变量上移到他们的父类中 去。 Example1 示例58 上移方法 如果一个类的两个子类中有相同的方法或者返回类型相同,做同一件事情,则可以将这个方 法上移到他们的父类中去。 Example2 示例60 下移方法 如果父类中某个方法只与部分子类有关,则将这一方法下移到子类中去。61 下移类变量同理,父类中某一成员变量只与部分子类有关,则将这一变量下移到子类中去。Eclipse 重构快捷键一览Alt+Shift+T打开重构菜单Alt+Shift+R方法,变量重命名Alt+Shift+V方法,变量移动Alt+Shift+I方法,变量内联Alt+Shift+M抽取方法Alt+Shift+L抽取局部变量Alt+Shift+C改变方法参数

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!