看见一个过长的函数或者须要一段注释才能让人理解的代码,能够考虑将这段代码放进一个独立函数中。函数
创造一个新的函数,根据这个函数的意图来对它命名(以它“作什么”来命名,而不是以它“怎么作”命名)。学习
须要重构的代码以下(代码并不复杂,只是为了说明方法):spa
function print () { var num = 1; console.log('*****************'); console.log('******Hello******'); console.log('*****************'); while(num < 10){ num += 2; } console.log('num:', num); }
示例:code
一、无局部变量blog
能够轻松提炼打印“Hello World”的代码。只须要剪切、粘贴、再插入一个函数调用的动做便可。get
function print () { var num = 1; printHello(); while(num < 10){ num += 2; } console.log('num:', num); } function printHello () { console.log('*****************'); console.log('******Hello******'); console.log('*****************'); }
二、有局部变量io
function print () { var num = 1; printHello(); while(num < 10){ num += 2; } printNum (num); } function printHello () { console.log('*****************'); console.log('******Hello******'); console.log('*****************'); } function printNum (num) { console.log('num:', num); }
1) 只在被提炼的代码中使用,能够将这个临时变量声明移到被提炼代码中,而后一块儿提炼出去。(这个很容易理解)console
2) 被提炼代码以后的代码还使用了这个变量,须要在提炼的代码中返回改变后的值。function
function print () { printHello(); var result = getNum(); printNum (result); } function printHello () { console.log('*****************'); console.log('******Hello******'); console.log('*****************'); } function getNum () { var num = 1; while(num < 10){ num += 2; } return num; } function printNum (result) { console.log('num:', result); }
不断学习,不断进步~~~class