وحدة 8 / 12

إعادة الهيكلة وإدارة الديون الفنية

المكاسب:

  • القدرة على إعداد شبكة أمان اختبارية تلتقط السلوك الحالي قبل إعادة البناء
  • القدرة على مطالبة الذكاء الاصطناعي بإجراء تحويلات صغيرة من خطوة واحدة للحفاظ على السلوك والتحقق من صحة كل خطوة
  • القدرة على تحديد وترتيب أولويات الديون الفنية في سياق الأعمال

تعمل إعادة البناء على تحسين البنية الداخلية للكود دون تغيير سلوكه الخارجي: مما يجعله أكثر قابلية للقراءة وأبسط وأكثر قابلية للصيانة. ومن ناحية أخرى، فإن الديون الفنية هي عبارة عن تسوية تصميمية تم إجراؤها من أجل حل سريع ويتم سدادها "مع الفائدة" بمرور الوقت - كل زاوية تقطعها اليوم ستعود كتباطؤ أو خطأ غدًا. يعد الذكاء الاصطناعي مساعدًا قويًا يعمل على تسريع مهام إعادة الهيكلة المتكررة والميكانيكية؛ ولكن هناك قاعدة ذهبية واحدة لإعادة الهيكلة، ولا يستطيع الذكاء الاصطناعي وحده ضمانها: ألا يتغير السلوك.

في هذه الوحدة، نتعلم كيفية إجراء إعادة هيكلة آمنة باستخدام الذكاء الاصطناعي: خطوات صغيرة وقابلة للعكس، والحماية من خلال الاختبارات، والكشف عن روائح التعليمات البرمجية وإعطاء الأولوية للديون الفنية. النقطة الحاسمة هي أن اختبارات النجاح، وليس كلمة الذكاء الاصطناعي، هي التي تثبت الحفاظ على السلوك.

القاعدة الذهبية لإعادة البناء: السلوك يظل ثابتًا

ما يجعل إعادة البناء أمرًا خطيرًا هو تغيير السلوك دون قصد أثناء قول "أنا أتحسن". إسقاط حالة الحافة عند تبسيط شرط ما، وكسر الترتيب عند تحويل حلقة، وفقدان تأثير جانبي عند تقسيم دالة - كل ذلك ينتج عنه رمز "نظيف المظهر" ولكنه مكسور.

ولهذا السبب يعد الاختبار شرطًا أساسيًا لإعادة البناء: قبل التغيير، يجب أن يكون لديك اختبارات تلتقط السلوك الحالي. وهذه الاختبارات بمثابة "شبكة أمان"؛ إذا كسرت شيئًا ما عن طريق الخطأ أثناء إعادة البناء، فسوف يكسرونك ويحذرونك. إذا لم يكن لديك اختبارات، فاكتب الاختبارات التي تصلح السلوك الحالي أولاً (كما تعلمنا في الوحدة 5) — وهذا هو المكان الذي يبدأ فيه الذكاء الاصطناعي.

تحذير: تعد إعادة الهيكلة بمساعدة الذكاء الاصطناعي بدون شبكة اختبار أحد أكثر مصادر الأخطاء خطورة. من السهل أن تقول "لقد حافظت على السلوك"؛ والدليل هو أن نفس الاختبارات تمر قبل التغيير وبعده.

خطوة بخطوة: تدفق إعادة البناء الآمن

  1. قم بإعداد شبكة الأمان. يجب أن تكون هناك اختبارات تلتقط السلوك الحالي للكود الذي ستعيد بناءه؛ إذا لم يكن الأمر كذلك، فاكتبها أولاً (وشاهدها).
  2. قم بتسمية الرائحة. ما الذي تتحسن ولماذا؟ "هذه الوظيفة تفعل 3 أشياء"، "نفس المنطق يتكرر في 4 أماكن"، "الأسماء مضللة".
  3. اطلب خطوات صغيرة من خطوة واحدة. اطلب من الذكاء الاصطناعي إجراء تحويل واحد (على سبيل المثال، فقط "تقسيم هذه الوظيفة إلى النصف")، وليس إعادة كتابة الملف بأكمله.
  4. قم بإجراء الاختبارات. بعد كل خطوة. إذا كان أخضر فاستمر، وإذا كان أحمر فأعده.
  5. قراءة الفرق. التأكيد سطرًا تلو الآخر على أن التغيير يهدف بالفعل إلى الحفاظ على السلوك؛ قد يكون هناك انزلاق منطقي عندما نقول أن الذكاء الاصطناعي هو "مجرد هيكل".
  6. الجمع في قطع صغيرة. تعد عمليات إعادة الهيكلة الكبيرة لمرة واحدة محفوفة بالمخاطر وغير قابلة للمراجعة.

ثلاث حالات صغيرة

الحالة 1 - وظيفة مكونة من 220 سطرًا مقسمة بأمان. كان لدى أحد الفرق وظيفة معالجة أوامر مكونة من 220 سطرًا. تمت كتابة أول 14 اختبارًا (بمساعدة الذكاء الاصطناعي) والتي التقطت السلوك الحالي، وقد نجحت جميعها. ثم تم تقسيم الوظيفة إلى 5 وظائف أصغر خطوة بخطوة بواسطة الذكاء الاصطناعي؛ تم إجراء الاختبارات بعد كل خطوة. تم كسر اختبارين في خطوة واحدة - لقد فات الذكاء الاصطناعي العودة في حالة الحافة. اكتشفت الاختبارات هذا الأمر على الفور وأصلحته. وبدون الشبكة، كان من الممكن أن يصل الخطأ إلى مرحلة الإنتاج.

الحالة 2 - كارثة بدون شبكة اختبار. قام مطور آخر "بتنظيف" وحدة حساب التاريخ التي لم يتم إجراء أي اختبارات عليها باستخدام الذكاء الاصطناعي. بدا الكود أفضل، لكنه كان يحسب السنة الكبيسة بشكل غير صحيح؛ ظهر الخطأ بعد أسبوعين مع شكوى من العميل. فاقت الخسارة بكثير الوقت الذي تم توفيره من إعادة البناء. الدرس المستفاد: إعادة البناء دون اختبار هو مقامرة.

الحالة 3 - تحديد أولويات الديون الفنية. أعطى أحد الفرق الذكاء الاصطناعي ما يقرب من 30 نقطة "قابلة للتحسين" وتم تسجيل كل نقطة على محور "تكرار التغيير × المخاطرة × الجهد". في الجدول الناتج، كانت الوحدة النمطية القبيحة التي نادرًا ما يتم لمسها ذات أولوية منخفضة في الواقع، في حين كانت الوحدة النمطية متوسطة التعقيد التي تتغير بشكل متكرر ذات أولوية عالية. وجه الفريق طاقته إلى المكان الصحيح.

أربعة قوالب قابلة للنسخ

كشف رائحة الكود وتحديد الأولويات:

قم بإدراج "الروائح" المرشحة لإعادة البناء في هذا الكود: دالة طويلة، تكرار (DRYViolation)، اسم مضلل، حالة متداخلة عميقة، تأثير جانبي مخفي، رقم سحري. لكل: الموقع، سبب المشكلة، الخطوة الصغيرة المقترحة، المخاطر المقدرة (منخفضة/متوسطة/عالية). لا تغير الكود بعد، فقط قم بالتخطيط.{{code}}

التحول في خطوة واحدة للحفاظ على السلوك:

فقط افعل هذا: {{تحويل واحد، على سبيل المثال. قسّم هذه الوظيفة إلى 3 وظائف مسماة أصغر}}. تغيير السلوك المرئي والتوقيع وقيم الإرجاع. اكتب في جملة واحدة لماذا يحافظ كل ما قمت بتغييره على السلوك.{{code}}

شبكة الأمان قبل إعادة البناء (اختبار التوصيف):

كتابة الاختبارات التي تلتقط السلوك الحالي لهذه الوظيفة (صحيح أم لا)؛ الهدف هو معرفة ما إذا كان السلوك يتغير أثناء إعادة البناء. تضمين إدخالات نموذجية + حافة. اكتب التوقعات بناءً على المخرجات الحالية للدالة.{{function}}

إنشاء سجل الديون الفنية (المتراكمة):

قم بصب قائمة الروائح التالية في جدول الأولويات: المادة، المنطقة المتأثرة، تكرار التغيير (معرفتي: {{...}})، المخاطر، الجهد المقدر، الأولوية الموصى بها. ضع التأثير العالي + الجهد المنخفض في الأعلى. {{قائمة_الروائح}}

موجه ضعيف / موجه قوي

ضعيف: "قم بتنظيف هذا الرمز وجعله أفضل."
Strong: "قم بتقسيم هذه الدالة المكونة من 90 سطرًا إلى 3 وظائف أصغر بمسؤولية واحدة، دون تغيير سلوكها الخارجي وتوقيعها. احتفظ بالآثار الجانبية (تكتب قاعدة البيانات) بالترتيب الحالي. لدي اختبارات، يجب أن يظل السلوك كما هو. أعط الفرق واشرح في جملة واحدة لماذا يحافظ كل تقسيم على السلوك. [رمز]"

نسخة قوية؛ فهو يتطلب تحويلاً واحدًا محددًا، ويفرض بوضوح قيودًا على السلوك والتوقيع، ويتطلب التبرير. تؤدي الطلبات الغامضة مثل "القيام بعمل أفضل" إلى تغييرات غير منضبطة ومحفوفة بالمخاطر.

نوع إعادة البناء

موثوقية الذكاء الاصطناعي

شرط أساسي

إعادة تسمية

عالية

هل النطاق صحيح؟

تقسيم الوظيفة

متوسطة عالية

Testnet أمر لا بد منه

تكرار المشاركة

متوسطة

قد يكون اختلاف السلوك مخفيًا

تغيير الخوارزمية/الهيكل

منخفض

اختبارات واسعة النطاق + التحقق من صحة الإنسان

إعادة الترتيب المعماري

منخفض

بقيادة الإنسان، وبدعم من الذكاء الاصطناعي

إدارة الديون الفنية، وليس إعادة ضبطها

إن الديون الفنية ليست كلها سيئة؛ في بعض الأحيان يكون الاقتراض الواعي (لتلبية التسليم) هو القرار الصحيح. والهدف ليس القضاء على الديون، بل جعلها مرئية ويمكن التحكم فيها. الذكاء الاصطناعي سريع في اكتشاف الديون وتحديد أولوياتها، ولكن تحديد "أي الديون ينبغي سدادها وأيها يجب التخلي عنه" يتطلب سياق العمل: كم مرة تتغير هذه الوحدة، وكم عدد الأشخاص الذين يؤثرون عليها، وما هي المخاطر؟ يتم اتخاذ هذا القرار من قبل الفريق الذي يعرف قاعدة التعليمات البرمجية والمنتج؛ الذكاء الاصطناعي يوضح الخيارات فقط.

نصيحة: أبقِ العلاقات العامة الخاصة بإعادة البناء منفصلة عن العلاقات العامة التي تتضمن تغييرًا في السلوك. إن القدرة على القول "إن العلاقات العامة هذه مجرد إعادة هيكلة، والسلوك هو نفسه" يجعل من السهل التحقيق ويسمح لك بتضييق نطاق السبب بسرعة في حالة ظهور مشكلة.

الأخطاء الشائعة

  • إعادة البناء بدون شبكة اختبار. لم يبق لك أي شيء لإثبات الحفاظ على السلوك.
  • وهذا يعني "مسح الملف بأكمله". إن التغييرات الكبيرة غير المنضبطة تخفي الخطأ ولا يمكن فحصها.
  • قبول الفرق دون قراءته. ربما يكون الذكاء الاصطناعي قد أخطأ بعض المنطق عندما قال "مجرد هيكل".
  • الخلط بين إعادة الهيكلة وتغيير السلوك. إن القيام بالأمرين معًا في نفس العلاقات العامة يجعل تتبع السبب الجذري أمرًا مستحيلًا.
  • تحاول إصلاح كل رائحة. غالبًا ما تكون التعليمات البرمجية القبيحة التي نادرًا ما تتغير ذات أولوية منخفضة؛ تخصيص الطاقة للمكان الذي يتغير بشكل متكرر.

باختصار

القاعدة الوحيدة لإعادة البناء هي أن السلوك يبقى ثابتًا، والدليل على ذلك هو الاختبارات. يتمتع الذكاء الاصطناعي بقدرة قوية على اكتشاف روائح التعليمات البرمجية، والتحويلات ذات الخطوة الواحدة، وتحديد أولويات الديون التقنية؛ ولكن عليك إعداد شبكة الأمان وإجراء الاختبارات وقراءة الفروق بعد كل خطوة. اتخذ خطوات صغيرة قابلة للعكس؛ التمييز بين إعادة الهيكلة وتغيير السلوك؛ ودع الفريق الذي يعرف سياق العمل يقرر الدين الذي يجب سداده.

مهمة التطبيق

اختر وظيفة من قاعدة التعليمات البرمجية الخاصة بك والتي تبدو طويلة أو معقدة بالنسبة لك. قم أولاً بطباعة الاختبارات التي تلتقط سلوكها الحالي باستخدام قالب "شبكة الأمان" ومعرفة ما إذا كانت جميعها قد نجحت أم لا. ثم قم بإعادة هيكلة الوظيفة بطريقة واحدة (على سبيل المثال، التقسيم إلى نصفين) باستخدام نمط "التحويل خطوة واحدة للحفاظ على السلوك" وإجراء الاختبارات مرة أخرى. إذا فشل الاختبار، اكتشف السبب؛ إذا لم ينكسر على الإطلاق، فاقرأ الفرق سطرًا تلو الآخر للتأكد من الحفاظ على السلوك بالفعل.

قائمة مرجعية

  • [ ] أعلم أن إعادة الهيكلة لا ينبغي أن تغير السلوك وهناك اختبارات لإثبات ذلك.
  • [ ] أقوم بإعداد شبكة أمان تلتقط السلوك الحالي قبل إعادة البناء.
  • [ ] أريد تحولات صغيرة في خطوة واحدة من الذكاء الاصطناعي، وليس تحولات كبيرة لمرة واحدة.
  • [ ] بعد كل خطوة أقوم بإجراء الاختبارات وقراءة الفرق.
  • [ ] أواصل إعادة هيكلة العلاقات العامة بشكل منفصل عن العلاقات العامة الخاصة بتغيير السلوك.
  • [ ] أعطي الأولوية للديون الفنية في سياق الأعمال، ولا أحاول التخلص منها بشكل أعمى.