جودة برمجيات

Code Smell , تخلص من السباجيتي , الجزء الثاني!

By حسام الكرد

June 07, 2014

نستكمل ما بدأناه في تدوينة الجزء الأول  حيث تحدثنا فيها عن ال Code Smell والأماكن التي من الممكن أن تكون سبب لعطب وعدم فهم التعليمات البرمجية

نتابع ال Code Smells وطرق معالجتها

خاصية الحسد (Feature Envy) :

سميت بذلك لأن الحسد يقوم على أساس أن تتمنى أن تملك شيء ويفقده الآخر , وهي نفس الفكرة من حيث أن قد يكون صنفين أحدمها يستخدم دالة من صنف آخر ويحتاجها ويستعملها أكثر من الصنف الذي يحوي تعريف هذه الدالة , لذلك يتم معالجتها عن طريق نقل هذه الدالة إلى الصنف الذي يستعملها من خلال

– نقل الدالة (Move Method) : يتم من خلالها نقل تعريف ومحتوى دالة من صنف لا يستعملها كثيرا إلى صنف آخر يستعملها ويحتاجها أكثر وتتم من خلال تعريف الدالة كما هي في الصنف القديم ووضعها في الصنف الجديد , على أن نقوم بتعويض عنها في الصنف القديم بإستدعائها من الصنف الجديد

 

Move Method

مثال سنقوم بنقل الدالة participate من صنف Person إلى Project

وبالتالي نقوم نقلها , وندائها بالطريقة الجديدة

الجمل التبديلية (Switch Statements) :

هناك الكثير من الجمل التبديلية التي يمكن تحويلها إلى متعددة الأشكال (polymorphism)

polymorphism

مثال : بدلا من إستخدام الشرط على نوع الحيوان

فيمكن إستبدال الجمل التبديلية في دالة printTheRightSound بمتعددة الأشكال

 

الصنف الكسول (Lazy Class) :

كل صنف يتم بناءه يكلف وقت وجهد من ناحية البناء ومن ناحية الفهم , لذلك إن كانت هناك أصناف فرعية لا تستخدم كثيرا يمكن ضمها إلى آصناف آخرى لتقوم هي بالدور مما يعرف بضم الهيكلية

– ضم الهيكلية (Collapse Hierarchy) : من خلالها يتم ضم الصنف الغير فاعل إلى صنف آخر يقوم بالدور مما يعرف ب (inline Class)

Collapse Hierarchy
Inline Class

 

التعليمات البرمجية المقتولة (Dead Code) :

الأجزاء الغير مستخدمة أو التعليقات (Comments) التي لم تعد لها فائدة , حاول إزالة كل الأشياء التي لا تستعملها فعليا في المشروع

الأرقام السحرية (Magic Numbers) :

هناك بعض الأرقام المستخدمة بصيغتها الرقمية , كل ماعلينا فعله هو تحويلها إلى ثابت (constant)

مثال

كانت هذه أهم الSmells المشهورة في التطبيقات , أتمنى أن تحسن الكثير لديكم

دمتم بود إلى تدوينة أخرى