انتقل إلى المحتوى

اصطلاح — انضباط §G (استخرج من الازدواجية، لا من التنبّؤ)

ما هو

"§G" هو قاعدة المشروع لـ متى تستخرج مساعدًا/تجريدًا مشتركًا: استخرج من ازدواجية ملحوظة، لا أبدًا من استخدام مستقبلي متوقَّع. سُمّي تيمّنًا بالقسم الذي قدّمه في تقرير MIQ-131 وطُبِّق كمنهجية مركزية عبر MIQ-132 وMIQ-133. وهو سبب قِصَر كتالوج المساعدات وقفل الأشكال المشتركة.

القاعدة

  • لا تستخرج بناءً على تنبّؤ. موجز يُدرِج ثمانية مرشّحين "قابلين لإعادة الاستخدام" هو فرضية، لا تكليف. ينبغي أن يبقى معظمها مضمّنًا حتى تظهر الازدواجية فعلًا. (من مرشّحي MIQ-131 الثمانية المتوقَّعين، استُخرِج بعضها فقط؛ تُرِك الباقي مضمّنًا عمدًا.)
  • قاعدة الثلاثة. استخرج عند المستهلك الحقيقي الثالث، لا الأول أو الثاني. استُخرِج SystemRowProtectedException<T> فقط حين احتاجه كيان ثالث فعلًا (MIQ-133، PB-085).
  • حتى بعد الثلاثة، استخرج فقط إن كان يُقرأ أنظف. بلوغ العتبة العددية ليس كافيًا — كان لـ StringBuilder الخاص بـ ComposeReferencedBody أربعة مستهلكين لكنه بقي مضمّنًا لأن الشكل المضمّن كان أوضح من أي توقيع مساعد.
  • اقفل الشكل؛ لا تجعله يتسرّب. بمجرد وجود تجريد مشترك (createLookupHooks، DeleteConfirmDialog)، يكون شكله مقفولًا (قرار MIQ-131 رقم 39). إذا فرض مستهلك جديد معاملًا سابعًا أو فعلًا مختلفًا، فالحركة الصحيحة هي ألّا تثني التجريد — أبقِ ذلك المستهلك مضمّنًا، أو قسّم التجريد. فرض معاملات غير لازمة على شيفرة مشتركة هو "التجريد المتسرّب" الذي يوجد §G لمنعه.

لماذا بُني بهذه الطريقة

التجريد المبكر أصعب نقضًا من الازدواجية. مساعد مُستخرَج بناءً على تنبّؤ يميل إلى تنمية معاملات تخمينية لحالات لا تصل أبدًا، فيدفع كل مستهلك حقيقي ثمن غير الموجودة. الانتظار لثلاثة استخدامات حقيقية يعني أن الشكل مؤسَّس على واقع، وقفل الشكل يمنع المستهلكين اللاحقين من تدهوره بهدوء.

كيف تطبّقه

عندما تلاحظ تكرارًا أثناء البناء، اسأل بالترتيب:

  1. هل هذا الحدوث الحقيقي الثالث؟ إن لا، اتركه مضمّنًا.
  2. إن نعم، هل سيُقرأ مساعد مشترك أنظف فعلًا من الشيفرة المضمّنة؟ إن لا، اتركه مضمّنًا ودوّن السبب.
  3. إن استخرجت، اقفل الشكل. مستهلك مستقبلي لا يلائم يبقى مضمّنًا — لا يحقّ له توسيع التوقيع.

مزالق / قيود

  • المستهلك الرابع (أو الـ Nث) ليس مبرّرًا تلقائيًا للاستخراج — قابلية القراءة لا تزال تحكم.
  • "أبقِه مضمّنًا" نتيجة صالحة ومُوثَّقة — دوّن القرار (مثلًا "B1 CodeUniquenessChecker: 3 BU-explicit + 1 implicit = لا توقيع نظيف؛ استدعاء المساعد أطول من الفحص المضمّن") بدلًا من الاستخراج على مضض.
  • الشكل المقفول يعني مقفولًا — إضافة معامل "فقط لهذا الكيان الواحد" هي الانحدار الذي يحرسه §G.

حالة البناء

Available — مُطبَّق كمنهجية صريحة عبر MIQ-131/132/133 (أقسام §G والقرار رقم 39).

ذات صلة

  • كتالوج المساعدات — المساعدات التي أنتجتها (ولم تنتجها) هذه القاعدة.
  • انضباط التدقيق-أولًا — البوّابة التي تسجّل قرارات الاستخراج هذه.
  • المصدر: تقرير MIQ-131 §G + القرار رقم 39؛ أقسام §G في تقارير MIQ-132 / MIQ-133 (manpoweriq/docs/).