جاري التحميل...
جاري التحميل...
متى وكيف تكتب تعليقات مفيدة
التعليقات الجيدة مثل الخرائط الطريق في الكود - она تساعد المطورين على فهم لماذا تم كتابة الكود بذلك الشكل، وليس ماذا يفعل الكود. الكود الواضح لا يحتاج تعليقات تشرح ما يفعله، لكنه يحتاج تعليقات تشرح السبب خلف القرارات.
💡 القاعدة الذهبية::
لا تشرحماذا، اشرح لماذا. الكود الجيد يشرح نفسه - التعليقات الجيدة تشرح السبب.
هناك فرق كبير بين التعليقات المفيدة والتعليقات المزعجة. التعليقات الجيدة تضيف قيمة، بينما السيئة تزيد فوضى الكود.
التعليقات السيئة تشرحماذا يفعل الكود، أو مكررة، أو قديمة.
التعليقات الجيدة تشرحلماذا تم اتخاذ قرار، أو تحذر من مشاكل معروفة، أو تشرح قيوداً غير واضحة.
تعليقات TODO و FIXME أدوات مفيدة لتتبع المهام المعلقة. لكن يجب استخدامها باعتدال وسياق واضح.
💡 نصيحة::
استخدم أدوات مثل eslint-plugin-no-todo لتحديد حد أقصى لـ TODOs لكل ملف. إذا كان هناك أكثر من 3 TODOs في ملف واحد، قد تحتاج إلى إعادة تقييم الأولويات.
JSDoc هو معيار لتوثيق الدوال في JavaScript. يساعد المطورين على فهم كيفية استخدام الدالة دون قراءة الكود الداخلي.
💡 متى تكتب JSDoc؟:
واجهات البرمجة العامة التي يستخدمها مطورون آخرون، الدوال المعقدة التي تحتاج إلى توثيق الاستخدام، الدوال التي تتفاعل مع قواعد البيانات أو واجهات البرمجة الخارجية. لا تكتب JSDoc للدوال البسيطة الواضحة.
أفضل تعليق هو كود يشرح نفسه. يمكن تحقيق ذلك بتسمية المتغيرات والدوال بشكل وصفي، واستخدام دوال صغيرة وبسيطة.
ملف README.md هو البوابة الأولى لأي مشروع. يخبر المطورين الجدد بكيفية البدء في العمل على المشروع وفهمه.
✅ ما يجب أن يحتويه README::
وصف واضح ومختصر للمشروع، خطوات التثبيت والاستخدام، أمثلة على الاستخدام، الإعدادات المطلوبة (متغيرات البيئة)، كيفية تشغيل الاختبارات، كيفية المساهمة.
🔍 القاعدة الذهبية::
لا تشرحماذا، اشرح لماذا.
TODO و FIXME مفيدة لكن يجب استخدامها باعتدال.README.md هي البوابة الأولى للمشروع ويجب أن تكون شاملة.ما هي القاعدة الذهبية للتعليقات في الكود النظيف؟
لديك الكود التالي المليء بالتعليقات السيئة. مهمتك: 1. احذف التعليقات الواضحة والمكررة، 2. أعد تسمية المتغيرات والدوال لتكون وصفية، 3. أضف تعليقات لماذا فقط حيث تحتاج، 4. أضف JSDoc للدوال العامة.
الحل:
// ❌ Before improvement:
// Function to calculate price
function calc(p, q) {
// Price multiplied by quantity
return p * q;
}
// Check user eligibility
function check(u) {
// If user age is greater than 18
if (u.age > 18) {
return true;
}
return false;
}
// ✅ After improvement:
/**
* Calculate order total price
* @param {number} unitPrice - Unit price
* @param {number} quantity - Required quantity
* @returns {number} Total before tax
*/
function calculateOrderTotal(unitPrice, quantity) {
return unitPrice * quantity;
}
/**
* Check customer eligibility for purchase
* Customer must be 18 years or older per regulations
* @param {Object} customer - Customer data
* @param {number} customer.age - Customer age in years
* @returns {boolean} true if eligible
*/
function isCustomerEligible(customer) {
const minimumAge = 18;
return customer.age >= minimumAge;
}أنواع التعليقات:
قواعد التعليقات: