Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

التحقق من الصحة والآثار الجانبية

جزء من قسم Object Oriented Programming في رحلة JavaScript على Coddy — الدرس 45 من 56.

يمكن لـ Getters و setters القيام بأكثر من مجرد قراءة وكتابة الخصائص - فهي تستطيع التحقق من صحة المدخلات وإحداث آثار جانبية عند تغير القيم.

لنقم بإنشاء فئة User مع التحقق من الصحة:

class User {
  constructor(name, age) {
    this._name = name;
    this._age = age;
  }
  
  get age() {
    return this._age;
  }
  
  set age(value) {
    // التحقق من أن العمر رقم وضمن نطاق معقول
    if (typeof value !== 'number') {
      throw new Error('Age must be a number');
    }
    
    if (value < 0 || value > 120) {
      throw new Error('Age must be between 0 and 120');
    }
    
    this._age = value;
    
    // تأثير جانبي: تسجيل التغيير عند تحديث العمر
    console.log(`Age updated to ${value}`);
  }
}

الآن عند استخدام الـ setter، تتم عملية التحقق من الصحة تلقائياً:

const user = new User('Alice', 25);

// هذا يعمل
user.age = 30;  // سجلات: "Age updated to 30"

// هذا يطرح خطأ
user.age = -5;  // خطأ: يجب أن يكون العمر بين 0 و 120

// هذا يطرح خطأ أيضاً
user.age = "thirty";  // خطأ: يجب أن يكون العمر رقماً

التحقق من الصحة (Validation) = التحقق مما إذا كانت القيمة صالحة قبل تخزينها
الآثار الجانبية (Side Effects) = إجراءات إضافية تحدث عند تغيير خاصية ما

challenge icon

التحدي

لقد تم تزويدك بفئة BankAccount مع أداة تعيين (setter) أساسية. مهمتك هي إكمال أداة تعيين balance.

أضف إلى أداة التعيين ما يلي:

  1. التحقق من الصحة (Validation): تحقق مما إذا كانت value ليست رقماً أو كانت أقل من 0 - إذا كان الأمر كذلك، قم بتنفيذ console.log("Invalid balance") واستخدم return للخروج من أداة التعيين
  2. تأثير جانبي (Side Effect): بعد تخزين قيمة صالحة، قم بتنفيذ console.log(\`Balance updated to ${value}\`)

جرّب بنفسك

import { BankAccount } from './account.js';

// حالات الاختبار
const account = new BankAccount("Savings");

// الاختبار 1: رصيد صالح
account.balance = 100;
console.log(account.balance);

// الاختبار 2: رصيد غير صالح (سالب)
account.balance = -50;
console.log(account.balance);

// الاختبار 3: رصيد غير صالح (ليس رقماً)
account.balance = "abc";
console.log(account.balance);

quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Object Oriented Programming