C# 重构

  微软对重构的定义:

重构是在编写代码后通过更改代码的内部结构而不更改代码的外部行为来改进代码的过程。

在C#中,重构主要有以下几种:

1.提取方法重构

 const double PI = 3.1415926;
        double CalculatePaintNeeded(double paintPerUnit, double radius)
        {
            double area = PI * paintPerUnit * radius;
            return area / paintPerUnit;
        }

选中double area = PI * paintPerUnit * radius; 进行CTRL+R、M

显示以下内容

提取方法是一种重构操作,它提供了一种从现有成员中的代码片段创建新方法的简单方法。

使用提取方法,您可以通过从现有成员的代码块内部提取选定的代码来创建新方法。提取的新方法包含所选代码,现有成员中的所选代码将替换为对新方法的调用。通过将代码片段转换为自己的方法,您可以快速准确地重新组织代码,从而获得更好的重用性和可读性。

提取方法具有以下优点:

  • 通过强调离散的、可重用的方法,鼓励最佳编码实践。

  • 鼓励通过良好的组织自我记录代码。

    使用描述性名称时,高级方法可以读起来更像一系列注释。

  • 鼓励创建更细粒度的方法以简化重写。

  • 减少代码重复。

2.重命名重构

 class ProtoClassA
    {
        public void MethodB(int i, bool b) { }
    }
    class ProtoClassC
    {
        void D()
        {
            ProtoClassA protoClassA = new ProtoClassA();
            protoClassA.MethodB(0,false);
        }
    }

鼠标放在protoClassA.MethodB(0,false);中MethodB处 CTRL+R,M

 重命名是 Visual Studio 集成开发环境 (IDE) 中的一项重构功能,它提供了一种重命名代码符号(如字段、局部变量、方法、命名空间、属性和类型)标识符的简单方法。重命名可用于更改注释和字符串中的名称,以及更改标识符的声明和调用。

3.封装字段重构

class Program
    {
        static void Main(string[] args)
        {
            Square square = new Square();
            square.width = 110;
            square.height = 150;
            Console.WriteLine("width={0}", square.width);
            Console.WriteLine("height={0}", square.height);
        }
    }
    class Square
    {
      // Select the word 'width' and then use Encapsulate Field.
        public int width, height;
    }

双击width按快捷键CTRL+R+M

通过封装字段重构操作,可以从现有字段快速创建属性,然后使用对新属性的引用无缝更新代码。

当一个字段公共的时,其他对象可以直接访问该字段,并且可以修改它,而拥有该字段的对象不会检测到它。通过使用属性来封装该字段,可以禁止直接访问字段。

若要创建新属性,"封装字段"操作将要封装的字段的访问修饰符更改为private,然后为该字段生成getset访问器。在某些情况下,仅生成一个访问器,例如,当字段声明为只读时。get

重构引擎使用对"封装字段"对话框的"更新引用"部分中指定区域中新属性的引用来更新代码。

备注
只有在将光标与字段声明置于同一行时才可以执行“封装字段”操作。

对于声明多个字段的声明,“封装字段”会使用逗号作为字段之间的边界,并对最邻近光标且与光标处于同一行的字段启动重构。还可以通过在声明中选择字段的名称来指定想要封装的字段。

4.提取接口重构

提取接口是一种重构操作,它提供了一种简单的方法来创建具有源自现有类、结构或接口的成员的新接口。

当多个客户端使用来自类、结构或接口的相同成员子集时,或者当多个类、结构或接口具有共同的成员子集时,在接口中体现成员子集会很有用

提取接口在新文件中生成一个接口,并将光标置于新文件的开头。您可以使用"提取接口"对话框指定要提取到新接口中的成员、新接口的名称以及生成的文件的名称。

   class ProtoA
    {
        public void MethdB(string s) { }
    }

鼠标放在要生成接口的类上即ProtoA上  CTRL+R、I

备注:

仅当光标位于包含要提取的成员的类、结构或接口中时,才能访问此功能。当光标处于此位置时,调用提取接口重构操作。

在类或结构上调用数据提取接口时,将修改基和接口列表以包含新的接口名称。在接口上调用数据提取接口时,不会修改基和接口列表。 

5.移除参数重构

是一种重构操作,它提供了一种从方法、索引器或委托中删除参数的简单方法。删除参数更改声明;在调用成员的任何位置,都会删除该参数以反映新声明。

通过首先将光标定位在方法、索引器或委托上来执行"删除参数"操作。当光标就位时,若要调用"删除"操作,请单击"重构"菜单,按键盘快捷键,或从快捷菜单中选择命令。

class A
    {
        //Invoke on 'A'
        public A(string s, int i) { }
    }
    class B
    {
        void C()
        {
            A a = new A('a',2);
        }
    }

将光标放在方法声明或方法调用中的方法上。A

注意:使用"删除参数"可以删除在成员正文中引用的参数,但不会删除方法正文中对该参数的引用。这可能会在代码中引入生成错误。但是,可以使用"预览更改"对话框在执行重构操作之前查看代码。 

6.重新排列参数重构

class ProtoClassB
    {
        public void MethodB(int i, bool b) { }
    }
    class ProtoClassC1
    {
        void D()
        {
            ProtoClassB protoClassB = new ProtoClassB();
            protoClassB.MethodB(1, false);
        }
    }

Reorder Parameters是一个 Visual C# 重构操作,它提供了一种简单的方法来更改方法、索引器和委托的参数顺序。 更改声明,并在调用成员的任何位置重新排列参数以反映新顺序

 双击MedhodB按下快捷键CTRL+R+V

官方文档可以参考这个网址  重构-微软官方文档

特别说明 -------- 新版本请访问网站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.csdn.net 版本 发布日期 ----------------------------- 1.0.0(Beta) 2003/6/13

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值