代碼的壞味道02:過長函數(Long Method)

來源:互聯網
上載者:User

90%的場合裡,要把函數變小,只需使用Extract Method (提煉函數),找到函數中適合集中在一起的部分,將它們提煉出來形成新函數。

如果函數內有大量的參數和臨時變數,它們會對你的函數提鍊形成障礙。你可以經常運用Replace Temp with Query (以查詢取代臨時變數),來消除這些臨時元素。Introduce Parameter Object (引入參數對象),Preserve Whole Object (保持對象完整)則可以將過長的參數列變得簡潔一些。

如果已經這麼做了,仍然有太多的臨時變數和參數,就應該使用 Replace Method with Method Object (以函數對象取代函數)。如何確定提煉哪一段代碼呢?一個很好的技巧是:尋找注釋。它們通常指出代碼用途和實現手法之間的語義距離。如果代碼前方有一行注釋,就是在提醒你:可以將這段代碼替換成一個函數,而且可以在注釋的基礎上給這個函數命名。就算只有一行代碼,如果它需要以注釋來說明,那也值得將它提煉到獨立函數中。

條件運算式和迴圈常常也是提煉的訊號。可以使用 Decompose Conditional (分解條件運算式)處理條件運算式。至於迴圈,應該將迴圈和其內的代碼提煉到獨立函數中。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.