Rumah > hujung hadapan web > tutorial js > Satu Tahap Abstraksi: Kunci kepada Fungsi Bersih

Satu Tahap Abstraksi: Kunci kepada Fungsi Bersih

Linda Hamilton
Lepaskan: 2024-10-30 21:02:30
asal
511 orang telah melayarinya

One Level of Abstraction: The Key to Clean Functions

Pernah melihat fungsi dan rasa hilang dalam kerumitannya? Mari kita terokai prinsip asas kod bersih: fungsi harus mengekalkan hanya satu tahap abstraksi.

Berikut ialah contoh dunia sebenar penciptaan pengguna dalam aplikasi 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 < 8) {
    return 'Password too short';
  }

  // Hash password
  const salt = generateSalt();
  const hashedPassword = hashWithSalt(userData.password, salt);

  // Format user data
  const user = {
    email: userData.email.toLowerCase(),
    password: hashedPassword,
    salt: salt,
    createdAt: new Date()
  };

  // Save to DB
  saveUserToDatabase(user);
}
Salin selepas log masuk

Fungsi ini mencampurkan tahap abstraksi yang berbeza:

  • Logik perniagaan peringkat tinggi (aliran penciptaan pengguna)
  • Operasi peringkat pertengahan (pengesahan data, pemformatan)
  • Butiran peringkat rendah (pencincangan kata laluan)

Mari kita memfaktorkannya mengikut tahap tunggal prinsip abstraksi:

// ✅ 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 < 8) return 'Password too short';
  return null;
}

function hashPassword(password) {
  const salt = generateSalt();
  return {
    hash: hashWithSalt(password, salt),
    salt
  };
}

function formatUserData(email, securePassword) {
  return {
    email: email.toLowerCase(),
    password: securePassword.hash,
    salt: securePassword.salt,
    createdAt: new Date()
  };
}
Salin selepas log masuk

Faedah Pendekatan Ini

  1. Kebolehbacaan: Fungsi utama berbunyi seperti cerita, menerangkan perkara yang berlaku pada tahap tinggi
  2. Kebolehselenggaraan: Setiap fungsi mempunyai tanggungjawab tunggal, menjadikan perubahan lebih selamat
  3. Kebolehujian: Anda boleh menguji setiap bahagian logik secara bebas
  4. Kebolehgunaan semula: Fungsi fokus ini boleh digunakan semula dalam konteks lain

Pengambilan Utama

Apabila menulis fungsi:

  • Pastikan mereka fokus pada satu tahap abstraksi
  • Ekstrak operasi kompleks ke dalam fungsi yang terkenal
  • Jadikan fungsi utama bercerita
  • Fikirkan setiap fungsi sebagai satu langkah dalam proses anda

Ingat: Jika anda mencampurkan "bagaimana" dan "apa" dalam fungsi yang sama, anda mungkin berurusan dengan berbilang tahap abstraksi. Pisahkan mereka!

Atas ialah kandungan terperinci Satu Tahap Abstraksi: Kunci kepada Fungsi Bersih. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan