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;
}

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

 

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

原文地址:https://www.cnblogs.com/cuishao1985/p/1505495.html