
التكرار أرخص من التجريد الخاطئ — تحذير ساندي ميتز
في محاضرة خلال RailsConf عام 2014 ومقال عام 2016 رأت ساندي ميتز أن التكرار أرخص بكثير من التجريد الخاطئ، وشرحت المسار الذي تتحول فيه دالة مشتركة إلى فخ مثقل بالشروط، ووصفت طريق العودة.
التكرار أرخص بكثير من التجريد الخاطئ
في مؤتمر RailsConf عام 2014، خصصت ساندي ميتز جزءاً قصيراً من محاضرتها "All the Little Things" لطرح ما يتردد صداه حتى اليوم في فرق البرمجة: التكرار أرخص بكثير من التجريد الخاطئ. كانت نصيحتها مباشرة — فضّلوا التكرار على التجريد الخاطئ. وكان التفاعل قوياً إلى حد دفعها لتوسيع الفكرة في مقال: كُتب النص أولاً لنشرتها البريدية Chainline وأُعيد نشره على مدونتها في يناير 2016. قال بعض المطورين إنها فقدت صوابها، بينما قال عدد أكبر إن النمط الذي وصفته موجود في كل مكان في شيفرتهم.
كيف يتحول التجريد الجيد إلى فخ
تصف ميتز قصة متكررة: يلاحظ المبرمج «أ» تكراراً، فيستخرجه ويمنحه اسماً — دالة أو صنفاً — ويستبدل به كل نسخة. تبدو الشيفرة مثالية. يمر الوقت، فيظهر متطلب جديد يناسبه التجريد تقريباً لا تماماً. يشعر المبرمج «ب» بالالتزام بالحفاظ عليه، فيضيف وسيطاً وشرطاً. ويأتي متطلب آخر بوسيط آخر وشرط آخر، وتستمر الحلقة حتى تصبح الشيفرة غير مفهومة.
الفخ نفسي بقدر ما هو تقني. الشيفرة القائمة تحاجّ عن بقائها: وجودها يوحي بأنها صحيحة وضرورية، وهي تمثل جهداً يريد أحدهم حمايته. وكلما زاد تعقيد الشيفرة وغموضها زاد الضغط للإبقاء عليها — وهي مغالطة التكلفة الغارقة. وبحلول وصول المطور التالي تكون الدالة المشتركة قد تحولت من فكرة واحدة إلى إجراء مثقل بالشروط يصعب فهمه ويسهل كسره.
طريق العودة: الإدراج ثم التقليم ثم إعادة الاستخراج
وصفتها تخالف الحدس: عندما يكون التجريد خاطئاً، فإن أسرع طريق إلى الأمام هو العودة إلى الخلف. أعد الشيفرة المجرّدة إلى داخل كل مستدعٍ، واستخدم الوسطاء داخل كل مستدعٍ لتحديد الجزء الذي يحتاجه فعلاً، واحذف الباقي. بذلك يختفي التجريد والشروط معاً، ولا يبقى لكل مستدعٍ سوى الشيفرة التي يستخدمها.
ووجدت الفرق التي جرّبت ذلك غالباً أن المستدعين لم يكونوا يوماً يفعلون الشيء نفسه. وبعد زوال التجريد القديم أمكن عزل التكرار من جديد واستخراج تجريدات جديدة من الدروس المستفادة، فصارت إضافة الميزات أسرع. القاعدة العملية لدى ميتز: إذا كنت تمرر وسطاء وتضيف مسارات شرطية في شيفرة مشتركة، فالتجريد خاطئ. والتخلي عنه مبكراً أقل إيلاماً من الدفاع عنه. وتكتب: «عندما يكون التجريد خاطئاً، فإن أسرع طريق إلى الأمام هو العودة إلى الخلف. هذه ليست تراجعاً، بل تقدم في اتجاه أفضل».
SiTech — تطوير ويب مدعوم بالذكاء الاصطناعي
نبني مواقع سريعة وعصرية وندمج الذكاء الاصطناعي في سير عمل الشركات. لديك مشروع أو سؤال؟ يسعدنا مساعدتك.