」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 一級抽象:簡潔函數的關鍵

一級抽象:簡潔函數的關鍵

發佈於2024-11-07
瀏覽:321

One Level of Abstraction: The Key to Clean Functions

曾經在看過一個函數後,感到迷失在它的複雜性中嗎?讓我們探討乾淨程式碼的基本原則:函數應該只維護一個抽象層級。

這是在 Web 應用程式中建立使用者的真實範例:

// ❌ A function doing too many things at different abstraction levels
function createUser(userData) {
  // Validate data
  if (!userData.email || !userData.email.includes('@')) {
    return 'Invalid email';
  }
  if (userData.password.length 



這個函數混合了不同層次的抽象:

  • 高階業務邏輯(使用者建立流程)
  • 中階作業(資料驗證、格式化)
  • 低階詳細資料(密碼雜湊)

讓我們以單層抽象原則重構它:

// ✅ Clean version with one level of abstraction
function createUser(userData) {
  const validationError = validateUserData(userData);
  if (validationError) return validationError;

  const securePassword = hashPassword(userData.password);
  const formattedUser = formatUserData(userData.email, securePassword);

  return saveUserToDatabase(formattedUser);
}

function validateUserData({ email, password }) {
  if (!email || !email.includes('@')) return 'Invalid email';
  if (password.length 



這種方法的好處

  1. 可讀性:主要功能讀起來像一個故事,描述了高層發生的事情
  2. 可維護性:每個功能都有單一職責,使變更更安全
  3. 可測試性:可以獨立測試每一段邏輯
  4. 可重複使用性:這些重點功能可以在其他上下文中重複使用

重點

編寫函數時:

  • 讓他們專注於一個抽象層次
  • 將複雜的操作提取到命名良好的函數中
  • 讓main函數說故事
  • 將每個功能視為流程中的一個步驟

記住:如果您在同一個函數中混合“如何”和“什麼”,您可能正在處理多個抽象級別。分開吧!

版本聲明 本文轉載於:https://dev.to/56_kode/one-level-of-abstraction-the-key-to-clean-functions-2ekb?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3