المعلوماتية > برمجيات

كود المعكرونة Spaghetti code؛ الرِماز البرمجي المُتشابك

قد يتفاجأ مُحبّو معكرونة السباغيتي بأنّ مُهندسي البرمجيات قد يصفون نظامًا برمجيًّا ما بها، ليس على نحو إيجابي لأنها ذات طعم لذيذ، ولكن بدلالة سلبية على جودة النظام البرمجي؛ فعندما يُوصَف نظامك البرمجي بمعكرونة السباغيتي فهو يُوصَف بأنّه نظامٌ ذو جودة منخفضة، وغير مُهيكل (Unstructured)، ومليء بالحلقات المتداخلة (Nested Loops)، والشروط البرمجية المُعقدة والمتداخلة (Deeply Nested Condition)؛ أي إنّه شديد التشابك كالمعكرونة (1).

على الرغم من أنّ البرمجيات لا تَبلى مع الزمن؛ فهي غالبًا ما تُعدّل باستمرار.

فإذا أُجرِيَت عديدٌ من التعديلات بدون اتباع منهجيات هندسة البرمجيات، وعند وجود ضغط كبير مستمر لتسليم المنتج النهائي لهذه التعديلات من الإداريين؛ ستقل جودة البرمجية مع الزمن وتَحُول حالته إلى الرماز المتشابك Spaghetti code (كود معكرونة السباغيتي) (2). 

هناك العديد من العوامل التي تسبب تحول النظام البرمجي إلى معكرونة السباغيتي، ومنها:

يدلّ الرِماز المتشابك على وجود تصميم سيّئ للنظام Design smell وحتى تنفيذ سيئ له، ومن دلالاته أن يُصمّم بفكر إجرائي عند اتباع منهجية البرمجة الغرضية التوجه؛ إذ تكون الأصناف (Classes) بدون بُنية مُحددة، وتحتوي على دالات (Methods) ضخمة ذات أسماء إجرائية بدون أي بارامترات (parameters). إضافةً إلى عدم استغلال مفهومات *منهجية البرمجة الغرضية التوجه؛ مثل مفهومي الوراثة (Inheritance) والتعددية الشكلية (Polymorphism) (3).

هوامش:

لمعرفة المزيد عن البرمجة الغرضية التوجه: هنا

المصادر:

1. Koopman P. Avoiding Spaghetti Code [Internet]. Course.ece.cmu.edu. 2020 [cited 30 December 2020]. Available from: هنا

2. Pizka M. Straightening Spaghetti-Code with Refactoring? [Internet]. Citeseerx.ist.psu.edu. 2004 [cited 30 December 2020]. Available from: هنا

3. Moha N, Gueheneuc Y, Duchien L, Le Meur A. DECOR: A Method for the Specification and Detection of Code and Design Smells [Internet]. Citeseerx.ist.psu.edu. 2009 [cited 30 December 2020]. Available from: هنا