الكود يُقرأ أكثر بكثير مما يُكتب - من قِبل الزملاء والمشرفين في المستقبل ونفسك في المستقبل. التوثيق الجيد ليس رفاهية؛ إنه استثمار طويل الأمد في وضوح الكود وإمكانية الوصول إليه وقابليته للتوسع.

لماذا يهم التوثيق (نعم، حتى عندما تكون مشغولاً)

يؤدي التوثيق في الصناعة وظائف عديدة:

فكّر في التوثيق كاستثمار طويل الأمد في وضوح الكود وإمكانية الوصول إليه وقابليته للتوسع.

مستويات التوثيق - ما الذي يذهب إلى أين

التوثيق عالي المستوى

الغرض: شرح ما يفعله النظام ولماذا يوجد.
الجمهور: المطورون الجدد، أصحاب المصلحة، الفرق الخارجية.

هذه هي طبقة "البداية". إنها تعطي القرّاء نظرة عامة مفاهيمية على المشروع وغرضه. فكّر فيها كالباب الأمامي لقاعدة الكود الخاصة بك.

المواقع النموذجية: README.md، دليل /docs/، صفحات الويكي (Confluence، GitHub Wiki)

ما يجب تضمينه: غرض المشروع وميزاته، تعليمات الإعداد والتثبيت، مخططات بنية النظام، قرارات التصميم الرئيسية، خطوات النشر، ونظرة عامة على التبعيات الخارجية وواجهات برمجة التطبيقات.

التوثيق على مستوى الوحدة

الغرض: وصف كيفية عمل الوحدات أو الحزم الفردية.
الجمهور: المطورون الذين يعملون في أجزاء محددة من قاعدة الكود.

يتعمق هذا المستوى في مسؤوليات وواجهات وحدود مكوّن محدد.

المواقع النموذجية: docstrings على مستوى الحزمة/الوحدة (مثل في __init__.py)، ملفات Markdown في الدليل ذي الصلة، مجلد فرعي /docs/modules/.

ما يجب تضمينه: ما تفعله الوحدة، الفئات أو الوظائف الرئيسية التي تعرضها، كيفية تفاعلها مع أجزاء أخرى من النظام، وخيارات التصميم أو القيود غير الواضحة.

التوثيق على مستوى الكود

الغرض: شرح كيفية عمل الكود ولماذا كُتب بطريقة معينة.
الجمهور: مطورون آخرون يصونون الكود أو يراجعونه.

هنا تكمن التفاصيل الدقيقة الحقيقية. ما ستشكر نفسك عليه مستقبلاً.

المواقع النموذجية: التعليقات الداخلية، docstrings للوظائف/الفئات/الطرق، تعليقات توضيحية للكود.

ما يجب تضمينه: لماذا تم اختيار نهج معين، شرح المنطق الصعب أو غير الحدسي، حالات الحافة أو الافتراضات، سلوك الإدخال/الإخراج المتوقع.

نصيحة: تجنب ذكر الواضح. تعليقات مثل # زيادة i لـ i += 1 لا تساعد أحداً. استخدم دائماً أسماء متغيرات ذات معنى - i كمكرر لن يساعدك كثيراً عندما تنظر إلى كودك لاحقاً.

الاختبارات كتوثيق

الغرض: توفير أمثلة واقعية على كيفية توقع سلوك الكود.
الجمهور: المطورون الذين يحاولون فهم الاستخدام أو منع الانحدار.

الاختبارات الجيدة هي توثيق حي. إنها تُظهر السلوك المقصود بطريقة تبقى محدّثة - لأن الاختبارات التي لا تعكس الواقع ستفشل.

المواقع النموذجية: دليل /tests/، مجلد /examples/.

ما يجب تضمينه: سيناريوهات الاستخدام النموذجية، حالات الحافة وظروف الخطأ، اختبارات التكامل أو النظام عالية المستوى.

التوثيق التشغيلي

الغرض: مساعدة فرق DevOps/SRE على نشر النظام ومراقبته وتصحيحه.
الجمهور: مهندسو المناوبة، فرق المنصة، وأي شخص يدير الإنتاج.

هذا هو ما ينقذ الأرواح خلال الحوادث.

المواقع النموذجية: runbook.md، مجلدات /ops/ أو /infra/، ويكي داخلية، أنظمة إدارة الحوادث.

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

الخلاصة

قاعدة الكود بلا توثيق طبقي تشبه مدينة بلا إشارات. يضيع المطوّرون ويأخذون مسارات خاطئة ويُهدرون الوقت في إعادة اكتشاف ما هو موجود أصلاً. حين يُصان كل مستوى من مستويات التوثيق، تصبح تجربة المطوّر سلسة ويمكن التنبؤ بها. الفرق المتميزة لا تضيف التوثيق كخطوة أخيرة، بل تعدّه جزءاً أصيلاً من عملية الهندسة، بالأهمية ذاتها التي يحظى بها الكود نفسه.

العودة إلى المدونة → اقرأ على Medium ↗