«إذا كان يعمل، لا تلمسه» — هي قاعدة غير مكتوبة في التطوير تنص على أنه لا ينبغي تغيير الكود الذي يعمل دون سبب وجيه، حتى لو بدت هيكليته غير مثالية. يستند المبدأ إلى الملاحظة التجريبية: أي تغيير يحمل خطر إدخال خطأ جديد، وقد لا تبرر فائدة إعادة الهيكلة الجهد المبذول. وفقًا لـ ويكيبيديا (2026)، يُستخدم هذا التعبير على نطاق واسع في الهندسة والسياسة والبرمجة كاستراتيجية محافظة لإدارة التغييرات.
الخلاصة
«إذا كان يعمل، لا تلمسه» — هي قاعدة تجريبية تحذر المطورين من إجراء تغييرات على الكود الذي يعمل بدون أسباب كافية. يعتمد المبدأ على إحصائيات بسيطة: الغالبية العظمى من العيوب تُدخل أثناء تعديل الكود الموجود.
المبدأ ليس عقيدة — بل هو استرشاد يساعد في اتخاذ القرارات في ظروف عدم اليقين. كلما كانت قاعدة الكود أكثر تعقيدًا وتشابكًا، زادت احتمالية أن يكسر تغيير «بريء» شيئًا لم يتوقع أحد كسره.
وفقًا لدراسة أجرتها شركة Microsoft (2024)، حوالي 60% من جميع الحوادث الحرجة في الإنتاج مرتبطة بتغييرات حديثة في الكود تم إجراؤها بنوايا حسنة ولكن لم يتم اختبارها بشكل كافٍ في ظروف التحميل الحقيقي.
التعبير «إذا كان يعمل، لا تلمسه» يعود إلى ثقافة الهندسة الأمريكية في منتصف القرن العشرين. يُنسب أول استخدام موثق إلى بيرت لانس (1977)، الذي كان يعمل في لجنة المالية بمجلس الشيوخ الأمريكي وكان يعارض التنظيم المفرط.
في البرمجة، جاء المبدأ من هندسة الأجهزة، حيث كان استبدال شريحة تعمل بأخرى جديدة قد يؤدي إلى عواقب غير متوقعة. في سياق البرمجيات، اكتسب هذا المبدأ انتشارًا خاصًا مع تزايد تعقيد أنظمة البرمجيات وظهور الكود القديم.
من المثير للاهتمام أنه في البرمجة، للمبدأ جانب معاكس — «يعمل، لكن الأفضل عدم لمسه» غالبًا ما يصبح مبررًا لتجنب إعادة الهيكلة، مما يؤدي على المدى الطويل إلى تراكم حرج للديون التقنية. وفقًا لشركة الاستشارات Thoughtworks (2023)، حوالي 40% من المشاريع تواجه مشكلات خطيرة بسبب التحفظ المفرط تجاه التغييرات.
مبدأ «إذا كان يعمل، لا تلمسه» مناسب بشكل خاص في حالات معينة حيث يتجاوز تكلفة الخطأ الفائدة المحتملة من التغييرات.
في الكود القديم غير المغطى بالاختبارات، أي تغيير هو لعبة الروليت الروسية. إذا لم يستطع المطور التحقق من أن التغيير لم يكسر الوحدات المجاورة، فإن أفضل استراتيجية هي عدم لمس الكود الذي يعمل. الاستثناء هو فقط الأخطاء الحرجة أو متطلبات الأمان.
في الأنظمة حيث التوقف غير مقبول أو تكلفة الخطأ هائلة — البرمجيات الطبية، إلكترونيات الطيران، المعاملات المالية — مبدأ «إذا كان يعمل، لا تلمسه» هو المعيار الفعلي. أي تغيير يمر عبر موافقة واختبار متعدد المراحل.
إذا كان الإصدار غدًا والكود يعمل — لا تحاول تحسين بنيته. غير فقط ما يؤثر بشكل مباشر على وظائف الإصدار. أرجئ إعادة الهيكلة إلى السباق التالي (لكن لا تنساها).
| الموقف | هل نطبق المبدأ؟ | البديل |
|---|---|---|
| الكود يعمل لكنه قبيح | نعم، إذا لم تكن هناك اختبارات | كتابة اختبارات، ثم إعادة الهيكلة |
| كود به خطأ معروف | لا | إصلاح الخطأ مع اختبار |
| ثغرة أمنية | لا | إصلاح فوري |
| تبعية قديمة | جزئيًا | تحديث مع اختبار |
| أداء منخفض | يعتمد على SLA | تحليل الأداء، ثم التحسين |
اتباع المبدأ «إذا كان يعمل، لا تلمسه» بشكل أعمى يحمل مخاطر لا تقل عن إعادة الهيكلة التي لا نهاية لها. دعنا نستعرض المخاطر الرئيسية.
إذا كان كل مطور يتبع هذا المبدأ، تتحول قاعدة الكود بسرعة إلى «كعكة طبقات» من الحلول القديمة والتعديلات المؤقتة والخوارزميات غير المثلى. عاجلاً أم آجلاً، يصبح الدين التقني غير محتمل — أي تغيير يتطلب أسابيع من التحليل.
أحيانًا التغيير الذي يبدو محفوفًا بالمخاطر يحسن بشكل كبير الأداء أو الأمان. مبدأ «إذا كان يعمل، لا تلمسه» لا يجب أن يمنع التغييرات التي تحقق فائدة قابلة للقياس — تقليل تكاليف الخوادم، تسريع تحميل الصفحات، تحسين الأمان.
عندما لا يلمس الفريق أجزاء معينة من الكود لسنوات، يفقد فهم كيفية عملها. يرحل المطور الرئيسي — ويتحول الكود إلى legacy بدون إمكانية الدعم. يجب تطبيق المبدأ مع مراعاة الصيانة طويلة الأمد للمشروع.
الاستراتيجية المثلى — ليست اتباع المبدأ بشكل أعمى، بل تطبيقه بوعي مع مراعاة السياق. إعادة الهيكلة ضرورية، لكن يجب أن تكون آمنة.
قاعدة الكشاف في البرمجة: «اترك الكود أنظف مما وجدته». إذا قام المطور بتغيير في وحدة، يجب عليه تحسين هيكليتها ولكن ضمن حدود معقولة. لا إعادة كتابة كل شيء من الصفر، ولكن على الأقل إعادة تسمية المتغيرات غير المقروءة وإضافة تعليقات.
الاختبارات — هي الطريقة الوحيدة لتطبيق مبدأ «إذا كان يعمل، لا تلمسه» بأمان. إذا كان الكود مغطى بالاختبارات، تصبح أي إعادة هيكلة متوقعة: يغير المطور الكود، يشغل الاختبارات ويرى إن كان هناك شيء قد انكسر. بدون اختبارات — لا تلمس. مع اختبارات — أعد الهيكلة بثقة.
// مثال: إعادة هيكلة آمنة تحت تغطية اختبار
class PriceCalculator {
fun calculatePrice(basePrice: Double, discount: Double): Double {
// كود قديم لكنه يعمل
return basePrice - (basePrice * discount / 100.0)
}
}
// اختبار يحمي من الانتكاس
class PriceCalculatorTest {
fun testCalculatePrice() {
val calc = PriceCalculator()
assertEquals(90.0, calc.calculatePrice(100.0, 10.0))
}
}
هذا المثال يوضح النهج الصحيح: أولاً الاختبار، ثم إعادة الهيكلة. إذا نجح الاختبار، التغيير آمن. مبدأ «إذا كان يعمل، لا تلمسه» يتحول إلى «إذا كان يعمل تحت الاختبارات، أعد الهيكلة بجرأة».
دعنا نستعرض سيناريوهات واقعية حيث كان مبدأ «إذا كان يعمل، لا تلمسه» منقذًا ومدمرًا في نفس الوقت.
اكتشف مطور أن كود معالجة التواريخ يستخدم تنسيق DD/MM/YY بدلاً من YYYY. كان الكود يعمل بشكل صحيح من 2000 إلى 2025. على الرغم من الرغبة في «إصلاحه»، ترك الكود كما هو مكتفيًا بتعليق. في 2026، قامت الشركة بتحديث النظام، وكان الحل الجديد يعالج القرون بشكل صحيح. التغيير المبكر كان سيكسر المنطق العامل.
قرر مهندس «تحسين» كود استيراد البيانات القديم لكنه يعمل عن طريق استبداله بمكتبة حديثة. لم يأخذ في الاعتبار أن المكتبة القديمة كانت تعالج حالة حدية محددة غير موثقة. بعد الإصدار — فقدان هائل للبيانات. تم انتهاك مبدأ «إذا كان يعمل، لا تلمسه»، وكانت تكلفة الخطأ أسبوعين من عمل الفريق للاستعادة.
الأسئلة الشائعة
لا، اتباع المبدأ بشكل أعمى يؤدي إلى تراكم الديون التقنية وفقدان مرونة المشروع. النهج الأمثل هو التطبيق الواعي في الحالات التي يتجاوز فيها خطر التغيير الفائدة المحتملة. من المهم تقييم كل حالة على حدة.
انتهاك المبدأ ضروري عند اكتشاف ثغرات أمنية، أخطاء حرجة تؤثر على بيانات المستخدم، وعند تحديث التبعيات ذات الثغرات المعروفة. في هذه الحالات، خطر عدم التصرف أعلى من خطر التغييرات.
الطريقة الآمنة الوحيدة — أولاً تغطية الكود بالاختبارات (اختبارات التوصيف)، ثم تنفيذ إعادة الهيكلة بخطوات صغيرة مع تشغيل مستمر للاختبارات. بدون حماية الاختبارات، يجب تطبيق مبدأ «إذا كان يعمل، لا تلمسه» بصرامة.
المطورون ذوو الخبرة ينتهكون المبدأ بوعي — يرون العواقب غير الواضحة للتنفيذ الحالي: أخطاء مستقبلية، اختناقات في الأداء، مشاكل قابلية التوسع. قراراتهم تستند إلى الخبرة وليس الخوف من التغييرات.
التوازن يتحقق من خلال ثقافة الاختبارات ومراجعة الكود. إذا كان الكود مغطى بالاختبارات، إعادة الهيكلة آمنة. إذا لم يكن كذلك، يجب أن يكون أي تغيير في الحد الأدنى الضروري. مبدأ «إذا كان يعمل، لا تلمسه» ليس حظرًا على التغييرات، بل هو مطلب للوعي.
الملخص
سنقوم بتطوير تطبيق جوال جاهز
تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.