إزاي تروض الكود الميت (Legacy Code) وتخرج من دوامة المتاهة البرمجية
أهلاً بيك يا زميلي في رحلة "التنقيب في الكهوف". أكيد مريت باللحظة دي: دخلت على مشروع قديم، فتحت فايل فيه 2000 سطر، مفيش كومنت واحد، واسم الفانكشن doSomething(). طبعاً شعورك في اللحظة دي بيبقى مزيج من الإحباط والرغبة في "الفرمطة" والبدء من جديد. بس اصبر، إعادة البرمجة من الصفر (Rewrite) هي فخ كبير غالباً هيوصلك لنفس المشاكل القديمة. النهاردة هقولك إزاي تتعامل مع الكود الميت أو الـ Legacy Code وتعمل له Debug باحترافية من غير ما تعصب نفسك.
Table of contents [Show]
الخطوة الأولى: قاعدة "لا تلمس، افهم الأول"
أكبر غلطة بنعملها لما نلاقي كود غريب إننا نبدأ نمسح ونعدل فوراً. نصيحتي ليك: ابدأ بـ "الملاحظة" (Observability). بدل ما تقرأ الكود سطر سطر، شغل البرنامج وشوف هو بيعمل إيه. استخدم أدوات الـ Debugger، وحط Breakpoints في أماكن متفرقة عشان تشوف "تدفق البيانات" (Data Flow) ماشي إزاي.
حاول ترسم مخطط بسيط على ورقة أو باستخدام أدوات زي Lucidchart يوضح الـ Entry points للبرنامج والـ Data dependencies عشان الصورة توضح في دماغك.
عشان تعدل في كود ميت من غير ما تكسر الدنيا، لازم تعمل "شبكة أمان". ابدأ اكتب Unit Tests للجزء اللي عايز تعدله. حتى لو الكود مش مكتوب بأسلوب الـ Testable، حاول تكتب Integration Tests تغطي الحالة (Case) اللي أنت بتشتغل عليها.
// مثال على اختبار بسيط لضمان استقرار الدالة القديمة
function test_legacy_logic() {
const input = { id: 1, type: 'user' };
const result = oldFunction(input);
assert(result.status === 'active', "النتيجة غير متوقعة!");
}
لما يكون عندك Test، أي تغيير هتعمله هيعرفك فوراً لو بوظت حاجة تانية في المشروع، وده بيقلل الـ Regression bugs بشكل كبير.
الخطوة الثالثة: استراتيجية "التفكيك الذكي" (Refactoring)
مش لازم تخلص كل حاجة في يوم واحد. طبق قاعدة "مبدأ الكشاف" (The Boy Scout Rule): دايماً سيب الكود أنضف مما لقيته. كل ما تدخل تـ Debug حتة، غير اسم متغير واحد، أو فكك فانكشن كبيرة لفانكشن صغيرة بأسماء واضحة (Clean Code). مع الوقت، المشروع كله هيتحول لكود مقروء ومنظم.
الخطوة الرابعة: التوثيق اللحظي (Documentation)
بما إن الكود ملوش Documentation، يبقى أنت اللي هتكتبه. مش لازم توثيق رسمي، كفاية إنك تضيف README صغير في كل Module أو تكتب Comments توضح "ليه" الكود اتكتب بالطريقة دي، مش "إزاي". الـ "ليه" (Context) هو أهم معلومة بيفقدها المبرمج اللي بيجي بعدك.
نصيحة من أخ: الصبر مفتاح الاحتراف
يا صاحبي، التعامل مع الكود القديم هو اللي بيصنع المبرمج الشاطر (Senior Developer). المبتدئ هو اللي بيحب يرمي كل حاجة ويبدأ من جديد، لكن المحترف هو اللي بيعرف يفك العقد ويخلي القديم يواكب الجديد. خدها واحدة واحدة، وماتحاولش تخلص كل حاجة في "أوفرتايم". استمتع باللغز، وهتلاقي نفسك بتتعلم حاجات في الـ Architecture والـ Debugging عمرك ما كنت هتشوفها في مشاريعك الجديدة.
بالتوفيق في مشروعك، ولو احتجت أي مساعدة في الـ Troubleshooting، أنا موجود!