23

ما هي معايير جودة البرمجة او المبرمج ؟

استنادا إلى فكرة أن الكود هو اقرب ما يكون الى نوع من المؤلفات الأدبية . والكود مع مرور الزمن يحتاج الى صيانة وإعادة استخدام وغير ذلك .. ويمكن القول ان الكود تتم قراءته أكثر من كتابتة لذلك اقول ان مواصفات الجودة للكود هي ان يكون مقروء ( واضح )

يجب على الكود ( الكود نفسه ، لا اقصد التعليقات ) ان يكون واضح القصد . إذا كان من يقرأ الكود لا يستطيع فهم المعنى بشكل بديهي سوف يجعل الأمر صعب للمبرمج الذي يريد إكمال الكود او صيانته وهذا يؤدي الى الإحباط و فشل المشروع في النهاية

كذلك يجب على الكود ان يكون اقتصادي بحيث لا يستهلك الكثير من موارد النظام ( RAM الذاكرة، وحدة المعالجة المركزية CPU ، وما إلى ذلك) بحيث يوفر التكاليف لانه اذا كان الكود يكلف الكثير من الموارد للتشغيل فهذا سوف يجعل التكلفة الاقتصادية كبيرة مما يؤدة بالمستثمر الى الغاء المشروع اذا كان العائد لا يغطي التكاليف وبالتالي يؤدي في النهاية الى فشل المشروع

اترك المجال للاعضاء لإضافة معايير أخرى


التعليق السابق

جواب شافي و كافي، ربما أستطيع إضافة بضع نقاط..

  • Open Close Principle: بحيث تصبح الكلاسات، الموديولز، الدوال وغيرها قابلة للتغيير، التطوير، المراجعة، سهلة أثناء الـ (Unit Tests) ليس فقط بالإعتماد على الـ Interfaces لكن كذلك باستغلال أنماط التصميم المختلفة.

  • Separation of concerns: تحدثت عنها بقولك: "جعل الدوال والكلاسات لديك مسؤولة عن شيء واحد فقط".. ولا يتعلق الأمر بالدوال و الكلاسات فقط، لكن يمكن تعميمه على طبقات و أجزاء التصميم ككل، بحيث تصبح "المعمارية؟" (Architecture) Multi Layered بحيث يتم تقسيم "النظام" لعدة "طبقات" (Layers) مكلفة كل واحدة منها بجزء محدد من العمل. كمثال بسيط: تطبيق ويب يجب أن يحتوي على Data Access Layer مكلفة خصيصا للتعامل مع data source كقاعدة البيانات مثلا، من الربط بها إلى التعامل مع الـ Exceptions الخاصة بها أو حتى تهيئة الـ ORM في حالة استعماله، كل هذا يكون عاما بعيدا عن خصوصيات الـ Business Logic التي تحيلنا لطبقة أخرى تتوفر على الكلاسات و الـ Logic الخاص ببرنامجنا. هنا يمكن أيضا في بعض الإستثناءات تفريق الـ Business Logic عن الـ Enities المكونة للنظام ككل.

بعد الـ Layers التي تم ذكرها، يمكن إضافة Layer خاص بالـ Presentation أو كل ما يشكل صلة وصل بمستعملي النظام (End User)، كالـ End Services أو بنية MVC خارجية، حيث الكونترولر في هذه الحالة يرتبط بالـ Business Logic لتوفير الداتا للـ vues و غيرها دون أدنى تدخل في الـ Logic.

الكلمة المفتاح هنا هي الـ Dependency Injection.

  • آخر نقطة أود إضافتها هي مفهوم الـ Scalability التي لا ترتبط فقط بعدد مستعملي التطبيق، لكن أيضا بعدد أسطر الكود الذي تمت كتابته، فكلما زاد هذا العدد عن المألوف، غالبا ما يكون التصميم الذي بني عليه البرنامج في حاجة للتغيير أو التطوير. ثم النقطة الأخرى هي عدد المبرمجين الذين يعملون على نفس الكود. المبرمج المحترف يعي جيدا أن طريقة البرمجة يجب أن تكون متوافقة مع الـ Conventions الخاص باللغة التي يبرمج بها، موثقة بشكل جيد، سهلة الفهم و بسيطة بشكل يسهل الإندماج معها و إتمام العمل بها خصوصا و أن الغالبية العظمى من الحالات يكون فيها المبرمج المكلف بالتنقيح و الصيانة مختلفا عن المبرمج الأول الذي طور البرنامج في المقام الأول.