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;
}
经过重构后,代码看上去清爽多了。提取方法还可以提高代码的重用性,提高代码的模块化程度。
*使用方法:选择需要重构的方法或属性,右键--->重构--->选择相应的操作即可。