تغييرات تمتدّ عبر الملفات
حتى الآن، كان كل edit في هذا المستوى صغيرًا ومحليًّا — ملف واحد، كتلة واحدة، سطر واحد. تلك هي الطريقة الصحيحة للبدء. لكنّها ليست الانطلاقة.
التغيير الذي يخشاه البشر — مَسّ ملفات كثيرة، وإبقاؤها متّسقة، وعدم تفويت أيّ منها — هو التغيير الذي يبرع فيه Claude أكثر من غيره.
ما إن تستوعب هذا حتى تستخدم Claude بشكل مختلف. ستتوقّف عن إجراء عمليات الـ refactor المملّة الممتدّة عبر 14 ملفًا بنفسك. ستتوقّف عن تجنّبها لأنها مرهقة. ستسلّمها له ببساطة.
ماذا يعني «الـ cross-file change» فعلًا
بضعة أمثلة، من الصغير إلى الكبير:
- إعادة تسمية function تُستخدَم في 14 موضعًا. كل call site، وكل import، وكل إشارة في الـ tests تحتاج إلى إعادة التسمية. فوّت واحدًا فينكسر البناء.
- تمرير parameter جديد عبر function وكل call site.
formatPrice(amount)تصبحformatPrice(amount, currency)، وكل مُستدعٍ يحتاج إلى الوسيط الجديد. - تحديث import path لملف انتقل للتوّ. قد يكون عشرون ملفًا تستورد من الموقع القديم.
- استبدال استدعاء API مهجور بالجديد — القصد نفسه، بصياغة مختلفة قليلًا — في كل موضع يُستخدَم فيه.
هذه هي التغييرات التي تستغرق من الإنسان ساعةً من الـ grep-and-edit ثم تثمر خطأً واحدًا بالضبط.
لماذا يكره البشر هذا
- إنه آليّ. ما من حُكم تقريبًا لكل ملف. مجرّد انتباه.
- الانتباه يخبو. في الملف التاسع تصير تتصفّح. وفي الثاني عشر تبدأ في تفويت أشياء.
- فوّت واحدًا والعاقبة صامتة — الكود يُترجَم، والـ tests تنجح، والـ bug يُشحَن.
- لا رضا في الإنجاز. لم تبنِ شيئًا جديدًا — أبقيتَ الأشياء متّسقة فحسب.
لذا يؤجّل البشر هذه المهامّ. أو يؤدّونها بشكل سيّئ. أو يؤدّونها نصفًا ويتعايشون مع التضارب.
لماذا يبرع Claude فيها
- لا إرهاق للانتباه. الملف الثاني عشر يحظى بنفس المعاملة كالأول.
- يستطيع البحث قبل التعديل — يجد كل reference أولًا، ثم يغيّر كلًّا منها.
- يحتفظ بقائمة ذهنية جارية بما مسّه، حتى تستطيع التحقّق.
- لا يختصر الطريق. لا يقرّر «هذا واحد على الأرجح بخير».
كيف يبدو الأمر عمليًّا
تطلب:
أعد تسمية الـ function `getUserData` إلى `fetchUser` في كل موضع — تعريف الـ function، وكل الـ call sites، وكل الـ imports. لا تغيّر أي شيء فيما تفعله.
Rename the `getUserData` function to `fetchUser` everywhere — the function definition, all the call sites, all the imports. Don't change anything about what it does.
يجري Claude البحث، ويجد كل تطابق، ويقترح diff يمسّ كل ملف. تقرأ الـ diff (الدرس 5.2 — نعم، حتى حين يكون طويلًا)، وتقبل، وتنتهي. ما كان سيستغرق 30 دقيقة من الـ grep-and-replace المعرّض للخطأ يصير دقيقتين من المراجعة.
العادة الجديدة
حين تلاحظ نفسك تخشى مهمّة لأنها «مرهقة» أو «مزعجة» أو «سهلة لكنها كثيرة الملفات» — تلك هي الإشارة. ذلك الخوف هو الوصف الوظيفي لـ Claude.
أنفِق انتباهك أنت على ما يحتاج إلى حُكم: خيارات التصميم، والـ bugs الغريبة، والشكل الصحيح لـ feature. وأنفِق انتباه Claude على ما يحتاج إلى اتّساق فقط.
ما التالي
التغييرات الكبيرة من نوع الـ cross-file قوية — والقوي يعني المؤثّر. الدرس التالي هو شبكة الأمان: كيف تتراجع بنظافة عندما يكون التغيير خطأً.