البرمجة الدفاعية والتحقق من المدخلات
اكتبوا عمليات تحقق صغيرة من المدخلات، واستخدموا عبارات الحراسة والتحليل الآمن والقيم الافتراضية والتحقق البسيط من الكائنات لمنع الإخفاقات مبكرًا
البرمجة الدفاعية والتحقق من المدخلات درس مجاني في JavaScript Academy على CoddyKit. هذا هو الدرس 2 من أصل 2. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في JavaScript Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة JavaScript Academy 2 دروس في المجموع.
مقدمة إلى التحققات الوقائية
الهدف: إيقاف المدخلات غير الصالحة مبكرًا حتى لا تنتشر الأخطاء.
- تحققات النوع والنطاق
- عبارات الحراسة
- التحليل الآمن
- القيم الافتراضية والتحقق البسيط من الكائنات

دوال مساعدة للأنواع
أنشئوا دوالًا مساعدة صغيرة لإعادة استخدام تحققات مثل number والسلسلة النصية غير الفارغة.
// Tiny type helpers
function isNumber(n) {
return typeof n === "number" && Number.isFinite(n);
}
function isNonEmptyString(s) {
return typeof s === "string" && s.trim().length > 0;
}
console.log("isNumber(3):", isNumber(3));
console.log("isNumber(NaN):", isNumber(NaN));
console.log("isNonEmptyString(\"\"):", isNonEmptyString(""));
console.log("isNonEmptyString(\"hi\"):", isNonEmptyString("hi"));

عرض توضيحي لعبارة الحراسة
تحققوا من المدخلات أولًا؛ وأوقفوا التنفيذ مبكرًا عند حدوث أخطاء ليظل المسار الرئيسي واضحًا.
// Guard clauses: return early if invalid
function buy(quantity) {
if (!isNumber(quantity)) {
console.log("Quantity must be a number");
return;
}
if (quantity <= 0) {
console.log("Quantity must be > 0");
return;
}
console.log("Buying", quantity, "items");
}
buy(3);
buy("3");
buy(0);

التحليل مع قيمة بديلة
تحققوا من النتائج التي جرى تحليلها. وإذا فشل التحليل، فأعيدوا قيمة بديلة صغيرة بدلًا من تعطّل البرنامج.
// Parse safely and use sensible defaults
function toInt(str, fallback = 0) {
const n = parseInt(str, 10);
if (!Number.isFinite(n)) {
return fallback;
}
return n;
}
console.log("toInt(\"42\"):", toInt("42"));
console.log("toInt(\"7px\", -1):", toInt("7px", -1));
console.log("toInt(\"abc\", 0):", toInt("abc", 0));

القيم الافتراضية والنطاقات
استخدموا ?? للقيم الافتراضية عند null/undefined، ثم احصروا القيمة ضمن نطاق آمن.
// Defaults with ?? and simple range checks
function clampPercent(value) {
// Use 0 as default when value is null or undefined
const v = (value ?? 0);
if (!isNumber(v)) {
return 0;
}
// Clamp into 0..100
const clamped = Math.min(100, Math.max(0, v));
return clamped;
}
console.log(clampPercent(undefined));
console.log(clampPercent(120));
console.log(clampPercent(-5));
console.log(clampPercent(55));

التحقق من بنية الكائن
تحققوا من الحقول المطلوبة والنطاقات البسيطة؛ وأعيدوا كائن نتيجة صغيرًا مثل { ok, reason }.
// Simple object validation
function validateUser(u) {
if (u == null || typeof u !== "object") {
return { ok: false, reason: "User must be an object" };
}
if (!isNonEmptyString(u.name)) {
return { ok: false, reason: "name required" };
}
if (!isNumber(u.age) || u.age < 0) {
return { ok: false, reason: "age must be a number >= 0" };
}
return { ok: true };
}
console.log("good:", validateUser({ name: "Ayla", age: 21 }));
console.log("bad:", validateUser({ name: "", age: -1 }));

اختبار التحققات الوقائية
تحقق سريع: معالجة المدخلات بطريقة وقائية.

مراجعة
مراجعة: استخدموا دوال مساعدة صغيرة للأنواع، وعبارات الحراسة، والتحليل الآمن مع قيم بديلة، والقيم الافتراضية للقيم الفارغة، وحصر النطاقات، والتحقق البسيط من الكائنات لإيقاف الأخطاء مبكرًا.

الأسئلة الشائعة
هل درس «البرمجة الدفاعية والتحقق من المدخلات» مجاني؟
نعم — نص درس «البرمجة الدفاعية والتحقق من المدخلات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة JavaScript Academy، انتقل إلى CoddyKit PRO. تتضمن دورة JavaScript Academy 2 دروس في المجموع.
ماذا ستتعلم في «البرمجة الدفاعية والتحقق من المدخلات»؟
اكتبوا عمليات تحقق صغيرة من المدخلات، واستخدموا عبارات الحراسة والتحليل الآمن والقيم الافتراضية والتحقق البسيط من الكائنات لمنع الإخفاقات مبكرًا تتمرن على JavaScript Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ JavaScript Academy؟
لا تُشترط خبرة سابقة. JavaScript Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 2.
كم من الوقت يستغرق درس «البرمجة الدفاعية والتحقق من المدخلات»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس JavaScript Academy هذا؟
نعم. كل درس في JavaScript Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- try/catch/finally وthrow والأخطاء المخصصة
- البرمجة الدفاعية والتحقق من المدخلات