zoukankan      html  css  js  c++  java
  • .Net 2.0新功能:重构(Refactoring)(4)

    【3】封装字段

    <1>可以从现有字段快速创建属性,然后使用对新属性的引用无缝更新代码。

    <2>当某个字段为public(C# 参考)时,其他对象可以直接访问该字段并对其进行修改,而不会被拥有该字段的对象检测到。通过使用属性(C# 编程指南)封装该字段,可以禁止对字段的直接访问。

    <3>仅当将光标与字段声明置于同一行时,才可以执行“封装字段”操作。

    ◆实例

    大部分开发者都习惯把类级的变量(字段)暴露给外界。由于每一个对象都属于面向对象编程,所以开发者应该允许通过属性或方法来存取变量。这种情况可以使用重构菜单下的“封装字段”选项来进行处理。

    为此,选择你想包装在一个属性中的类级变量并且选择"封装字段"选项。这将打开一个如下图所示的对话框:

    你需要输入该属性的名字并且决定是否你想从类外或类内部更新到该变量的参考。就象“重命名”对话框一样,你可以在应用之前先预览一下所作的改变。

    源代码:

    string s; 

    封装后代码:

                

    string s;

    public string S

    {

    get { return s; }

    set { s = value; }

    }

    【4】提取接口

    <1>使用来自现有类、结构或接口的成员创建新接口的简单方法。

    <2>当几个客户端使用类、结构或接口中成员的同一子集时,或者当多个类、结构或接口具有通用的成员子集时,在接口中嵌入成员子集将很有用。

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

    ◆实例

    【5】将局部变量提升为参数

    <1>提供一种简单的方法,以在正确更新调用站点的同时将变量从局部使用移动至方法、索引器或构造函数参数.

    <2>调用“将局部变量提升为参数”操作时,变量将被添加到成员参数列表的结尾处.

    <3>对已修改成员的所有调用都将使用新参数(将替代最初赋给该变量的表达式)立即进行更新,并保留代码,以使其像变量提升之前那样正常工作.

    <4>将常数值赋值给提升的变量时,此重构操作效果最好。必须声明并初始化该变量,而不能仅声明或仅赋值.

    ◆实例

    源代码:

      private static void NewMethod2()

    {

    string s = "";

    }

    选中s,转换后,

     private static void NewMethod2(string s)

    {

    }

    【6】移除参数

    <1>从方法、索引器或委托中移除参数的简单方法.

    <2>在调用成员的任何位置,都会将参数移除以反映新声明.

    ◆实例

    源代码:

                

    protected void Page_Load(EventArgs e, object sender)

    {

    int i = 0;

    NewMethod2("1","2");

    }

    private static void NewMethod2(string s1, string s2)

    {

    string s = s1 + s2;

    }

    移除后的代码:

                

    protected void Page_Load(EventArgs e, object sender)

    {

    int i = 0;

    NewMethod2();

    }

    private static void NewMethod2()

    {

    string s = s1 + s2;

    }

    【7】重新排列参数

    <1>对方法、索引器和委托的参数顺序进行更改的简单方法.

    <2>可以通过方法声明或方法调用来重新排列参数。要将光标置于方法声明或委托声明中,而不是置于正文中。

    ◆实例

    源代码:

     private static void NewMethod2(string s1,string s2)

    {

    }

    重新排列后,

     private static void NewMethod2(string s2,string s1)

    {

    }

  • 相关阅读:
    46、Spark SQL工作原理剖析以及性能优化
    45、sparkSQL UDF&UDAF
    44、开窗函数及案例
    43、内置函数及每日uv、销售额统计案例
    42、JDBC数据源案例
    41、Hive数据源复杂综合案例
    40、JSON数据源综合案例实战
    39、Parquet数据源之自动分区推断&合并元数据
    Java 的String类
    Java学习之旅基础知识篇:面向对象之封装、继承及多态
  • 原文地址:https://www.cnblogs.com/niceboy/p/1272700.html
Copyright © 2011-2022 走看看