حقل مفيهوش قيمة وحقل قيمته صفر وحقل فيه نص فاضي ممكن يبانوا متشابهين في الواجهة لكن معناهم في البرنامج مختلف التعامل معاهم بنفس الشرط ممكن يغير قيمة صحيحة أو يخفي بيانات ناقصة
حدد معنى كل حالة في مشروعك
ممكن يكون null معناه إن القيمة مش متحددة والصفر معناه مفيش كمية والنص الفاضي معناه إن المستخدم ساب حقل نصي فاضي وفي JavaScript ال undefined بتظهر مثلا عند قراءة خاصية غير موجودة
المعنى النهائي لازم تحدده أنت حسب الحقل مش حسب اختصار برمجي جاهز
const product = { stock: 0, subtitle: "", discount: null };
console.log(product.stock);
console.log(product.subtitle === "");
console.log(product.discount === null);
console.log(product.rating === undefined);0
true
true
trueالقيمة البديلة ممكن تمسح معنى الصفر
ال || بتختار البديل لما القيمة الأولى Falsy وده يشمل الصفر والنص الفاضي أما ?? فبتختار البديل عند null أو undefined بس
const stock = 0;
console.log(stock || 10);
console.log(stock ?? 10);
console.log("" || "Default");
console.log(("" ?? "Default") === "");10
0
Default
trueلو المخزون صفر فإظهار 10 بدل منه خطأ حقيقي ال ?? بتحافظ على الصفر لكن ده مش معناه إنها مناسبة لكل حقل لو الاسم الفاضي مرفوض عالجه بقاعدة صريحة
المسافات مش نص فاضي
النص اللي فيه مسافات طوله أكبر من صفر لو الحقل نصي وعندك قاعدة بتسمح بإزالة المسافات من الأطراف استخدم trim ثم افحص النتيجة متطبقش ده عشوائيا على حقول ليها قواعد مختلفة زي كلمات المرور
const name = " ";
console.log(name.length);
console.log(name === "");
console.log(name.trim() === "");3
false
trueالتحويل لرقم محتاج قرار واضح
بعض التحويلات بتطلع صفر لقيم ممكن تعتبرها ناقصة أنت فافحص الغياب قبل التحويل واستخدم قواعد تمنع NaN والقيم غير المحدودة لما تكون غير مقبولة
function readAmount(value) {
if (typeof value !== "string" || value.trim() === "") return null;
const amount = Number(value);
return Number.isFinite(amount) ? amount : null;
}
console.log(readAmount("0"));
console.log(readAmount(""));
console.log(readAmount("abc"));0
null
nullالدالة هنا بتوضح الفرق بين مدخل ناقص ورقم محدود لكنها مش تحقق كامل لحقل مالي مثلا الحقل المالي محتاج تحدد الصيغ المسموحة والدقة والمدى وطريقة تخزين الكسور
مترميش نفس المعنى على كل اللغات
في PHP و JavaScript و Python فيه اختلافات في التحويل والمقارنة والقيم اللي بتعتبر غير متحققة في الشرط اقرأ قواعد اللغة واختبر الحالات اللي مشروعك بيقبلها بدل الاعتماد على شكل القيمة
جرب حالات صغيرة قبل اعتماد الشرط
اكتب نتيجة متوقعة للصفر والنص الفاضي والمسافات و null و undefined والقيمة الطبيعية وبعدها جرب الدالة عليهم لو مش عارف النتيجة الصح لحالة معينة فالمطلوب نفسه محتاج يتحدد الأول