Clean Code في JavaScript: مبادئ كتابة الكود النظيف

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

Clean Code في JavaScript: المبادئ والأمثلة



الكود النظيف (Clean Code) ليس مجرد مصطلح عصري، بل هو نهج أساسي في التطوير يجعل البرنامج مفهوماً وسهل الصيانة والتوسيع. في عالم JavaScript و Node.js، حيث تنمو المشاريع بسرعة وتتطلب تغييرات متكررة، تصبح مبادئ Clean Code مهمة بشكل خاص. في هذا المقال، سنستعرض الممارسات الأساسية لكتابة كود نظيف في JavaScript مع أمثلة محددة ستساعدك على تحسين جودة مشاريعك.



1. التسمية الصحيحة للمتغيرات والدوال



يجب أن يجيب اسم المتغير أو الدالة على سؤالي "ما هذا؟" و"ماذا يفعل؟". تجنب الأسماء المكونة من حرف واحد (باستثناء عدادات الحلقات) والاختصارات غير الواضحة.



مثال سيء:

const d = new Date();const a = [];const fn = (x, y) => x + y;


مثال جيد:

const currentDate = new Date();const userList = [];const calculateSum = (firstNumber, secondNumber) => firstNumber + secondNumber;


قواعد التسمية:

  • استخدم camelCase للمتغيرات والدوال.
  • للقيم المنطقية (boolean)، استخدم البادئات: is، has، should (مثل isActive، hasPermission).
  • سمِّ الدوال بأفعال: getUser، sendEmail، validateInput.
  • تجنب الاختصارات: usr ← user، conf ← configuration.


2. دوال صغيرة وذات مهمة واحدة



يجب أن تؤدي كل دالة مهمة واحدة بالضبط. إذا كانت الدالة تقوم بأكثر من إجراء، فيجب تقسيمها إلى عدة دوال. هذا يحسن قابلية القراءة والاختبار.



مثال سيء (الدالة تقوم بـ 3 مهام في وقت واحد):

function processUserData(user) {  // التحقق  if (!user.email || !user.password) {    throw new Error('Invalid data');  }  // التنسيق  const formattedUser = {    email: user.email.toLowerCase(),    password: hashPassword(user.password)  };  // الحفظ في قاعدة البيانات  db.save(formattedUser);  return formattedUser;}


مثال جيد (تقسيم إلى دوال منفصلة):

function validateUserInput(user) {  if (!user.email || !user.password) {    throw new Error('Email and password are required');  }}

function formatUserData(user) { return { email: user.email.toLowerCase(), password: hashPassword(user.password) };}

function saveUserToDatabase(user) { return db.save(user);}

function processUserData(user) { validateUserInput(user); const formattedUser = formatUserData(user); return saveUserToDatabase(formattedUser);}


هذا النهج يجعل الكود موثقاً ذاتياً ويبسط عملية البحث عن الأخطاء.



3. معالجة الأخطاء والحالات الحدودية



الكود النظيف يتضمن بالضرورة معالجة الأخطاء ويأخذ في الاعتبار الحالات الحدودية. لا تترك مجالاً للأعطال غير المتوقعة.



مثال سيء (لا توجد معالجة للأخطاء):

function getUserAge(user) {  return user.age; // إذا كان user أو user.age غير معرّف — خطأ}


مثال جيد (مع حماية):

function getUserAge(user) {  if (!user || typeof user.age !== 'number') {    return null; // أو throw new Error('Invalid user data')  }  return user.age;}


مبادئ معالجة الأخطاء:

  • استخدم try/catch للعمليات غير المتزامنة (خاصة في Node.js).
  • أنشئ فئات أخطاء خاصة بك لمواقف مختلفة.
  • لا تبتلع الأخطاء بصمت — سجلها أو ارفعها للأعلى.


class ValidationError extends Error {  constructor(message) {                

المدونات

توصيات الكتب