《重構-改善既有代碼的設計》學習筆記----Extract Method(提煉函數)

看見一個過長的函數或者須要一段註釋才能讓人理解的代碼,能夠考慮將這段代碼放進一個獨立函數中。函數

創造一個新的函數,根據這個函數的意圖來對它命名(以它「作什麼」來命名,而不是以它「怎麼作」命名)。學習

須要重構的代碼以下(代碼並不複雜,只是爲了說明方法):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

相關文章
相關標籤/搜索