摘要:
概述 将函数本体(method body)替换为另一个算法。 动机(Motivation) 如果你发现做一件事可以有更清晰的方式,就应该以较清晰的方式取代复杂方式。可以把一些复杂的东西分解为较简单的小块,但有时你就是必须壮士断腕,删掉整个算法,代之较简单的算法。 public string Foun 阅读全文
摘要:
你有一个大型函数,其中对局部变量的使用,使你无法釆用 Extract Method。 将这个函数放进一个单独对象中,如此一来局部变量就成了对象内的值域(field) 然后你可以在同一个对象中将这个大型函数分解为数个小型函数 class Order... double price() { double 阅读全文
摘要:
public class RemoveAssignmentsToParameters { //before remove assigments to parameters public int discount(int inputVal,int quantity,int yearToDate) { 阅读全文
摘要:
动机:临时变量有各种不同用途,其中某些用途会很自然的导致临时变量被多次赋值。“循环变量”和“结果收集变量”就是典型的例子:循环变量会随循环的每次运行而改变; 结果收集变量负责将“通过这个函数的运算”而构成的某个值收集起来。 除了这2种情况,还有很多临时变量保存一段冗长代码的运算结果,以便稍后使用。这 阅读全文
摘要:
Introduce Explaining Variable 概述 将复杂表达式的结果放进一个临时变量,以此变量名称来解释表达式用途。 动机(Motivation) 表达式有可能非常复杂而难以阅读,临时变量可以帮助你将表达式分解为比较容易管理的形式。 作法(Mechanics) 1、声明一个final 阅读全文
摘要:
Replace Temp with Query 概述 程序以一个临时变量(temp)保存某一表达式的运算结果。将这个表达式提炼到一个独立函数(查询式,query)中。将这个临时变量的所有(被引用点)替换为对新函数的调用。新函数可被其它函数使用。 动机(Motivation) 临时变量的问题在于,它们 阅读全文
摘要:
Inline Temp 概述 一个临时变量,只被一个简单表达式赋值一次,而它妨碍了其它重构手法。 动机(Motivation) Inline Temp多半是作为Replace Temp with Query的一部分来使用。惟一单独使用Inline Temp的情况是:你发现某个临时变量被赋予某个函数调 阅读全文
摘要:
Inline Method(内联函数) 一、Inline Method 概述 一个函数,其本体(method body)应该与其名称(method name)同样清楚易懂. 动机(Motivation) 以简短的函数表现动作意图,这样会使代码更清晰易读.但有时候你会遇到某些函数.其内部代码和函数名称 阅读全文
摘要:
引用自 Refactoring Improving the Design of Existing Code Martin Fowler 1.Extract Method(提炼函数) 范例(Examples) 1、无局部变量(No Local Variables) public class Extra 阅读全文