• C# 重构


    1.重构

    所谓重构也就是“保持软件的外在功能不变,重新调整其内部结构”。
    Rename:       改名了,类、函数、成员等名字都可以改。
    Extract Method:    将某段代码封到一个新函数里。
    ------------------------------
    Encapsulate Field:   将某个字段转成属性
    Extract Interface:   将某个属性或函数转成一个接口,从而是当前的这个属性或函数成为接口实现。 
    Promote Local Variable to Parameter: 将某个局部变量提升为函数参数 
    Reorder Parameters:  对函数参数排序
    Remove Parameters:  删除某个函数参数,但函数内对这个参数的使用不会删除。

    重构函数(CHAPTER6)

    Extract Method
    前提:已经通过其他重构方法处理了间接变量。
    目的:缩小函数的粒度以增加复用;强化代码的清晰度。
    目标:函数的名称能够很好的表达函数要实现的“功能”。而不是要怎样做。

    Inline Method

    是Extract Method  的逆过程。正是因为有了这些逆过程,你才可以放心大胆的进行重构。

    前提:被Inline的函数不能是多态的。Inline后无法表达多态的情况。
    目的:去掉非必要的间接性。或者用于重组的一组组织不合理的函数的前提。
    目标:去掉不必要的函数或者过多的委托。

    提取方法是最常用的重构之一。当一个方法看起来太长或者方法中一些代码需要注释才能明白它的目的时,可以考虑把它们提取出来作为一个独立的方法。如:

    void PrintOwing()
    {

      double outstanding = 0;  
      //print banner
      Console.WriteLine("**********");
      Console.WriteLine("***Owes***");
      Console.WriteLine("**********");
      //Calculate outstanding
      foreach(Order o in orders)
      {
        outstanding += o.Amount;
      }  
      //print details
      Console.WriteLine("Name: " + name);
      Console.WriteLine("Amount: " + outstanding);
    }

      通过提取方法,重构后代码如下

    void PrintOwing()
    {
      PrintBanner();
      outstanding = GetOutStanding();
      PrintDetails(outstanding);
    }
    void PrintBanner()
    {
      Console.WriteLine("**********");
      Console.WriteLine("***Owes***");
      Console.WriteLine("**********");
    }
    void PrintDetails(int outstanding)
    {
      Console.WriteLine("Name: " + name);
      Console.WriteLine("Amount: " + outstanding);
    }
      
    int GetOutStanding()
    {
      double result = 0;  
      foreach(Order o in orders)

      {
         result += o.Amount;
      }  
      return result;
    }

      经过重构后,代码看上去清爽多了。提取方法还可以提高代码的重用性,提高代码的模块化程度。

     

    *使用方法:选择需要重构的方法或属性,右键--->重构--->选择相应的操作即可。

  • 相关阅读:
    那一定都是你的错!- 一次FastDFS并发问题的排查经历
    程序员和烟民
    Spring Boot(十六):使用 Jenkins 部署 Spring Boot
    阿里Dubbo疯狂更新,关Spring Cloud什么事?
    从架构演进的角度聊聊Spring Cloud都做了些什么?
    FastDFS 集群 安装 配置
    中小型互联网公司微服务实践-经验和教训
    jvm系列(十一):JVM演讲PPT分享
    jvm系列(十):如何优化Java GC「译」
    Spring Boot (十五): Spring Boot + Jpa + Thymeleaf 增删改查示例
  • 原文地址:https://www.cnblogs.com/cuishao1985/p/1505495.html
Copyright © 2020-2023  润新知