作法(Mechanics)
- 创造一个新函数,根据这个函数的意图来给它命名(以它[做什么]来命名,而不是以它[怎么做]命名)。
--》即使你想要提炼(extract)的代码非常简单,例如只是一条消息或一个函数调用,只要新函数的名称能够以更好方式昭示代码意图,你也应该提炼
它。但如果你想不出一个更有意义的名称,就别动。
- 将提炼出的代码从源函数(source)拷贝到新建的目标函数(target)中。
- 仔细检查提炼出的代码,看看其中是否引用了[作用域(scope)限于源函数]的变量(包括局部变量和源函数参数)。
- 检查是否有[仅用于被提炼码]的临时变量(temporary variables)。如果有,在目标函数中将它们声明为临时变量。
- 检查被提炼码,看看是否有任何局部变量(local-scope
variables)的值被它改变。如果一个临时变量值被修改了,看看是否可以被提炼码处理为一个查询(query),并将结果赋值给相关变量。如果很难
这样做,或如果被修改的变量不止一个,你就不能仅仅将这段代码原封不动地提炼出来。你可能需要先使用Split Temporary Variable(128),然后再尝试提炼。也可以使用Replace Temp with Query(120)将临时变量消灭掉。
- 将被提炼码中需要读取的局部变量,当作参数传给目标函数。
- 处理完所有局部变量之后,进行编译。
- 在源函数中,将被提炼码替换为[对目标函数的调用]。--》如果你将任何临时变量移到目标函数中,请检查它们原本的声明式是否在被提炼码的外围。如果是,现在你可以删除这些声明式了。
- 编译,测试。
|