软件重构

本文介绍了软件重构的重要步骤,包括抽取方法、拆分大对象、提高代码复用率、发现程序可扩展点和降低程序依赖度。通过这些方法,可以改善代码结构,增强可读性和可维护性,同时降低耦合度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

软件重构

重构工具箱

  1. 抽取方法:将代码段提取出来,形成单独的函数
  2. 抽取类:将函数或代码段提取出来,形成单独的类
  3. 抽取接口:将相似的,或者同类型的代码抽取出来形成接口,以及接口下的多个实现

重构的步骤

第一步:分解大函数

对于超级大函数,解决的最有效的方法就是分解,按照功能一步一步的进行分解,还原其应有的优化结构。这个过程我们常用的重构方法是“抽取方法”

对于重复的代码,应抽取到一个统一的函数中为其他各处所调用

一些块操作的语句,如条件语句、循环语句、try语句,都可能成为抽取函数的标志

常见的问题:

将代码从原函数中抽取出来形成新的函数,数据只能通过参数和返回值进行交互,这将给我们带来诸多麻烦

第二步:拆分大对象

拆分大对象采用”职责驱动设计“思想:就是要求我们设计的所有类和接口都要有自己的职责定义。儿类和接口内部的所有方法和属性都要围绕着该职责来进行,它们都是高度相关的。每个类和接口绝不去做跟自己职责无关的事情

拆分大对象采用的重构方法为抽取类

第三步:提高代码复用率

当重复代码存在于同一对象时-抽取方法

当重复代码存在于不同对象中时-抽取类

不同对象中复用代码的另一种方法-封装成实体类

当重复代码所在类具有某种并列关系时-抽取父类

当出现继承泛滥时-将继承转换为组合,将代码不同的部分封装到一个统一接口下的多个实现类中

第四步:发现程序可扩展点

系统的可扩展设计和需求变更是一对“鸡生蛋还是蛋生鸡的问题”,《大话重构》中建议不要过早的实现可扩展设计,因为可扩展设计基本上都有加大程序的复杂度、降低系统性能的负作用。我们完全可以在新需求需要可扩展设计时再进行这样的设计

特别说明 -------- 新版本请访问网站www.bluefishes.net. 考虑到稳定性,新版本不支持Visual Studio.NET 2002. 产品名称 -------- SharpRefactor(C#代码重构工具) 产品简述 -------- 本工具用于代码重构和代码自动生成。现阶段主要用于C#代码重构。 所谓重构也就是“保持软件的外在功能不变,重新调整其内部结构”。 关于每种重构模式的含义,请参见http://www.refactoring.com/ 具体功能参见具体版本的特性列表。 对重构很感兴趣或是很关注使用效率的用户,希望[使用指南]一节对你有所助益。 版本 ---- 1.0.0(BETA). 发布日期 -------- 2003/6/13 作者 ---- C# Refactor Team. 制作 ---- Blue Workshop. 环境要求 -------- Visual Studio.Net 2003 Windows 2000 + SP2 + SMTP Service 特别提示 -------------- 本插件使用了异常处理和报告机制。 一般而言,环境、代码以及其他原因都会导致程序出错。因此,在您使用本插件的过程中,可能会弹出错误报告。一部分错误不会影响使用,另一部分会影响使用。 C# Refactor Team愿意随提供技术支持,及为你解除问题。 版本1.0.0特性 ------------- Rename Parameter Rename Local Variable Rename Field Rename Property Rename Class Rename NameSpace Safe Delete Parameter Safe Delete Local Variable Safe Delete Field Safe Delete Property Safe Delete Method Safe Delete Class Safe Delete NameSpace Extract Interface Undo/Redo Preview usage before refactor(重构前预览) Auto build after refactor(重构后自动生成) Options(工具选项) User feedback(用户反馈) 使用指南 -------- 所有功能暂不支持静态成员。 尽量使用鼠标右键菜单。 尽量使用快捷方式,比如:单击鼠标右键,弹出菜单后再连续按‘R’键和‘C’键就可以调用[Rename]菜单下的[Rename Class]命令。 在使用Rename系列命令,需要先转到定义代码元素的地方。此,可以先使用右键菜单中的[转到定义]命令。 在Option中可以设置首选项。 由于Visual Studio在生成较大的解决方案会不成功,所以Auto build after refactor通常用于较小的解决方案。 Rename NameSpace与Move Class不同。Move Class的焦点在Class,即改变类所在的NameSpace。而Rename NameSpace的焦点在NameSpace,即改变指定NameSpace的名字,并更新该NameSpace的所有引用(Usages)。 错误报告以及建议功能需要网络连接和Windows自带的SMTP服务。因为发送速度很快,所以不会占用您宝贵的间。 可以使用User feedback功能提出您睿智的建议、批评、任何意见。 技术支持 -------- Tiger.BlueWorkshop@163.net 下载 ---- www.youkuaiyun.com 版本 发布日期 ----------------------------- 1.0.0(Beta) 2003/6/13
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值