ما هو الكود النظيف clean code؟
الكود النظيف هو أمر شخصي، وكل مطور لديه وجهة نظر شخصية، هناك بعض الأفكار التي تعتبر أفضل الممارسات والتي تشكل كودًا نظيفًا داخل العمل ومجتمع المبرمجين، لا يوجد اتفاق حاسم نهائياً، ولن يكون هناك على الإطلاق، لكن عندما نتحدث عن الكود النظيف، فإننا نتحدث عن أسلوب تطوير يركز على القارئ وينتج برامج يسهل كتابتها وقراءتها وصيانتها، والتعريف الأكثر شيوعًا للكود النظيف هو الكود الذي يسهل فهمه وتغييره، لكن ماذا يعني ذلك حقًا؟ دعنا نفصل هذه الجملة ونفحص النقاط الفردية وراءها:
سهولة الفهم: تعني سهولة قراءة الكود، سواء كان ذلك القارئ هو الكاتب الأصلي للكود أو أي شخص آخر، وعندما يكون معنى الكود والهدف منه واضح، فإن ذلك يقلل من الحاجة إلى التخمين وإمكانية سوء الفهم، إذ من السهل فهمها على كل المستويات، وعلى وجه التحديد:
- من السهل فهم تدفق تنفيذ التطبيق بأكمله.
- من السهل فهم كيفية تعاون الكائنات (objects) المختلفة مع بعضها البعض.
- من السهل فهم دور ومسؤولية كل (class).
- من السهل فهم ما تفعله كل دالة.
- من السهل فهم الغرض من كل جملة ومتغير.
التغيير السهل: يعني أن الكود سهل التوسيع وإعادة البناء، كما أنه من السهل إصلاح الأخطاء في قاعدة الكود، ويمكن تحقيق ذلك إذا كان الشخص الذي يُجري التغييرات يفهم الكود، ويشعر أيضًا بالثقة في أن التغييرات التي تم إدخالها في الكود لا تؤدي إلى تعطيل أي وظيفة موجودة، لكي يكون الكود سهل التغيير:
- الـ (Classes) والدوال لا تتحمل سوى مسؤولية واحدة.
- تحتوي الـ (Classes) على واجهات برمجة تطبيقات عامة واضحة وموجزة.
- يمكن التنبؤ بعمل الفئات والدوال.
- الكود قابل للاختبار بسهولة ولديه اختبارات الوحدة (أو من السهل كتابة الاختبارات للكود).
- الاختبارات سهلة الفهم والتغيير بسهولة.
أسباب أهمية الكود النظيف:
1. الوضوح:
من السهل أن تنسى أن كل سطر يكتبه مطورو برامج الكود من المحتمل أن تتم قراءته عدة مرات بواسطة البشر خلال حياته، هؤلاء البشر عادة ما يكونون زملاء العمل، وهم مشغولون بإصلاح الأخطاء وإضافة الميزات،لذلك يجب على كل مطور الاهتمام بالكود وجعله نظيف وواضح قدر الإمكان.
المطورون مثل المؤلفين، المؤلفون العظماء معروفون بكتابة الكتب التي تحكي قصة واضحة ومقنعة، ويستخدمون الفصول والعناوين والفقرات؛ لتنظيم أفكارهم بوضوح وإرشاد القارئ دون عناء، يعمل المطورون في نظام مشابه جدًا، لكنهم يستخدمون مساحات الأسماء والفئات (classes) والدوال بدلاً من الكلمات.
2. أفضل الممارسات:
في السنوات الأخيرة، نمت أفضل ممارسات البرامج مثل اختبار الوحدة، و اختبار يحركها التطوير (TDD)، و (CI)، وما إلى ذلك بسرعة كبيرة من حيث التبني، تعمل هذه الممارسات على رفع جودة الكود وإمكانية صيانتها، يعد تنفيذ مبادئ الكود النظيف مهارة أساسية تؤتي ثمارها بشكل خاص عندما يحين وقت إعادة بناء الكود، أو وضع الكود قيد الاختبار، حيث يسهل الكود النظيف القراءة والاختبار، إذا كنت تفكر في الأمر كجزء من منزل، فإن الكود النظيف هو أساس المنزل.
3. المنطق الكامن وراء الكود:
إذا سألك شخص ما عن جودة الكود الخاص بك، فيجب عليك تقديم تبرير منطقي، إذا لم تفكر مطلقًا في جودة أسلوب كتابة الكود بشكل منهجي، فمن المحتمل أن يكون هناك الكثير من الفرص للتحسين، أولئك الذين يكتبون كودًا نظيفًا لديهم أنشطة وأنماط وتقنيات ملموسة يستخدمونها للحفاظ على الكود الخاص بهم نظيفًا.
4. الصيانة:
كتابة الكود سهلة نسبيًا، لكن قراءته صعبة، هذا هو السبب في أن العديد من المطورين يفضلون إعادة كتابة الكود بدلاً من القيام بالعمل الشاق المتمثل في قراءة وفهم الكود الموجود، من خلال كتابة الكود يمكن قراءته، فأنت تقوم بتحسين (90٪) من الوقت الذي نقرأ فيه الكود، بدلاً من (10٪) من الوقت الذي تكتبه فيه، هذه إستراتيجية أكثر فعالية من حيث التكلفة بشكل ملحوظ من الإستراتيجية البديلة لكتابة الكود بأسرع ما يمكن دون القلق بشأن سهولة قراءة الكود.
ومع الكود النظيف، لن تحتاج إلى إلقاء اللوم على الآخرين بسبب رداءة جودة الكود، فهو المعيار والأساس الذي يعمل عليه الجميع، لذلك، فإن إنشاء كود يمكن صيانته، سيحسن معظم الوقت والتكلفة لصيانة الكود.
5. سهل الاختبار:
من خلال إنشاء كود نظيف، يتم المساعدة على الاختبار الآلي لذلك الكود، من خلال الاختبار الآلي أي الاختبار المستند إلى التطوير، وهو الطريقة الأكثر فاعلية لتحسين جودة الكود، وتحسين سرعة الفريق على المدى الطويل، وتقليل عدد عيوب البرامج، تساهم كل هذه العوامل بشكل كبير في إجمالي عائد الاستثمار للبرنامج.
6. البساطة:
حافظ على الكود الخاص بك بسيطًا وقابلًا للقراءة قدر الإمكان، ولا تفرط في تعقيد المشكلات (وهي مشكلة شائعة بين مطوري البرامج)، من خلال إبقائها بسيطة، يمكنك إنتاج كود عالي الجودة وحل المشكلات بشكل أسرع والعمل بشكل أفضل في مجموعات.
ولا تضف ميزات إضافية لأنك قد تحتاج إليها في المستقبل، فهي مضيعة للوقت والمال، وفي الواقع أنها ضارة، عندما تزيد من تعقيد الكود عن طريق إضافة ميزات إضافية، فإنك تجعل قراءة الكود وفهمه وصيانته واختباره أكثر صعوبة، من خلال القيام بذلك، فإنك تخلق أخطاء في الكود الخاص بك، وأنت لا تعرف المستقبل، حتى لو كنت محقًا في أن الميزة ستكون ضرورية في وقت لاحق، فقد تكون هناك حاجة إليها بعد عامين فقط من الآن، وبحلول ذلك الوقت، ربما تكون قد وجدت طريقة أفضل للقيام بذلك.
7. الاتساق:
تخيل أنك تذهب إلى متجر ولا يوجد اتساق حول كيفية وضع السلع فيه، سيكون من الصعب العثور على المنتجات التي تبحث عنها، بادئة المسافة في الكود تشبه إلى حد كبير الترتيب الذي تحتاجه في السوبر ماركت، عندما يتم وضع مسافة بادئة لكودك، تصبح أكثر قابلية للقراءة وأسهل للعثور على ما تبحث عنه، خاصة عندما تنتبه إلى أسماء العناصر.
يعد وجود اصطلاحات تسمية مناسبة ومنطقية أمرًا مهمًا للغاية في الكود لعمليات التحرير المستقبلية، إن وجود أسماء غير ملائمة أو متناقضة لصفحاتك أو متغيراتك أو دوالك أو مصفوفاتك لن يؤدي إلا إلى مشكلة لك في المستقبل، لذلك، فإن تسمية العناصر على أساس ما هي عليه هي قاعدة شائعة تساعد كثيرًا، إنه يخلق الاتساق، ويسهل العودة والعمل على المشروع في وقت لاحق.
8. التوفير في التكاليف:
من خلال كتابة نظيف، ستحصل على كل تلك المزايا المذكورة أعلاه، وكلها تؤدي إلى توفير التكاليف.