首頁  >  文章  >  web前端  >  乾淨程式碼的黃金法則:函數應該要做一件事

乾淨程式碼的黃金法則:函數應該要做一件事

Patricia Arquette
Patricia Arquette原創
2024-10-07 18:19:31939瀏覽

The Golden Rule of Clean Code: Functions Should Do One Thing

在軟體工程的世界中,有一個原則高於其他原則:函數應該做一件事,並且做得很好。這個概念通常稱為單一職責原則 (SRP),是乾淨、可維護程式碼的基石。

為什麼這很重要?

當函數具有單一職責時:

  1. 它們比較容易理解和推理
  2. 測試變得更簡單、更有針對性
  3. 重建風險較小,較直接
  4. 程式碼可重複使用性顯著提高
  5. 調試不再那麼令人頭痛

讓我們來看一個例子來說明這原理的實際應用。

不良實踐:多重職責功能

考慮這個向客戶發送電子郵件的功能:


function emailClients(clients) {
  clients.forEach(client => {
    const clientRecord = database.lookup(client);
    if (clientRecord.isActive()) {
      email(client);
    }
  });
}


這個函數正在做幾件事:

  1. 迭代客戶端
  2. 查詢每位客戶的記錄
  3. 檢查客戶端是否處於活動狀態
  4. 向活躍客戶發送電子郵件

雖然將所有這些都放在一個地方似乎很有效,但它使該功能更難以維護和測試。

良好實踐:單一職責職能

現在,讓我們將其重構為更小、更集中的函數:


function emailActiveClients(clients) {
  clients.filter(isActiveClient).forEach(email);
}

function isActiveClient(client) {
  const clientRecord = database.lookup(client);
  return clientRecord.isActive();
}


在此重構版本:

  • emailActiveClients 專注於向活躍客戶發送電子郵件的高級任務
  • isActiveClient 處理決定客戶端是否處於活動狀態的細節

這種關注點分離使得每個函數更容易理解、測試,並且可能在程式碼庫的其他部分中重複使用。

這種方法的好處

  1. 可讀性:程式碼講述了一個清晰的故事。任何閱讀 emailActiveClients 的人都可以快速理解其目的,而無需陷入實現細節的困境。
  2. 可測試性:您現在可以輕鬆地為電子郵件發送邏輯和用戶端活動檢查編寫單獨的測試。
  3. 靈活性:如果需要更改活躍客戶端的確定方式,只需修改 isActiveClient 函數即可。
  4. 可重複使用性:如果需要,isActiveClient 函數現在可以在程式碼庫的其他地方使用。

結論

接受「函數應該做一件事」的原則一開始可能會感覺很冗長,但是對程式碼庫的可維護性和團隊的生產力的長期好處是巨大的。當你寫和重構程式碼時,總是問自己:「這個函數是否不只做一件事?」如果答案是肯定的,那麼是時候分解它了!

請記住,乾淨的程式碼不僅僅是讓事情正常運轉,而是讓事情優雅且可持續地運轉。快樂編碼!

以上是乾淨程式碼的黃金法則:函數應該要做一件事的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn