advanced-manufacturing-techniques
كيفية استخدام تقنيات إعادة التصنيع المبادئ الصلبة
Table of Contents
مقدمة: لماذا تردد وتسلم يدا بيد
فكل نظام برمجياتي كان في طور التطوير الفعلي لأكثر من بضعة أشهر يتراكم حتماً الدين التقني، وكثيراً ما تؤدي الإصلاحات السريعة والمتطلبات المتغيرة والضغط على الملامح الجديدة إلى شفرات هشة يصعب فهمها ويصعب توسيعها، وتبرز ممارستان بوصفهما أكثر مضادات هذا الضمحل فعالية: إعادة تصنيع والمبادئ :
إن إعادة التصنيع هي الأسلوب الانضباطي لإعادة هيكلة القانون القائم دون تغيير سلوكه الخارجي، ولا يصلح الحشرات أو يضيف المعالم؛ بل يحسن الهيكل الداخلي بحيث تصبح التغيرات المستقبلية أكثر أمانا وأسرع، وتوفر مبادئ SOLID، التي وضعها روبرت س. مارتن، مجموعة من المبادئ التوجيهية التصميمية التي، عندما يتبعها، تعد رمزا قابلا للاستمرار، ويمكن اختباره، ومرونة للتغيير، وتأتي الصلاحيتان معاصرتان طبيعيتان.
وفي الممارسة العملية، يكافح العديد من أفرقة التنمية لتطبيق مبادئ " شولد " بأثر رجعي، وقد يكون الرمز الأصلي مقترناً بمنطق مشروط، أو ملتفي بالمنطق، وبدون نهج منتظم، فإن الجهود الرامية إلى " جعلها " ساوثايد " تبدو ساحقة، حيث تتحول تقنيات إعادة التصنيع إلى خطوات صغيرة وتحكم السلوك، يمكن أن تتحول تدريجياً إلى مبدأ " متجانس " .
Understanding the SOLID Principles
وقبل التخلّص من تقنيات إعادة التصنيع، ستضع عملية فرز موجزة لقائمة المختصر التابعة لمؤسسة SOLID المرحلة التالية:
- Single Responsibility Principle (SRP): ] A class should have only one reason to change — that is, it should have a single, well-defined responsibility.
- Open/Closed Principle (OCP):] Software entities (classes, modules, functions) should be open for extension but closed for modification.
- Liskov Substitution Principle (LSP):] Objects of a superclass should be replacedable with objects of a subclass without affecting the correctness of the program.
- Interface Segregation Principle (ISP):] Clients should not be forced to depend on interfaces they do not use.
- Dependency Inversion Principle (DIP): ] High-level modules should not depend on low-level modules; both should depend on abstractions.
ويعالج كل مبدأ نوع محدد من رائحة الرموز، ويكافح مشروع تجديد نظم الملكية فئات " تعرف الكثير " ، ويكافح برنامج حماية البيئة سلاسل مشروطة، ويمنع النظام الهرمي الهرميات الهشّة للميراث، ويكافح البرنامج واجهات سمينية تؤدي إلى تنفيذ أساليب لا تُستخدم، ويعالج البرنامج الإنمائي الانقلاب الصارم لعمليات التنفيذ الملموسة، ثم ننظر في الكيفية التي يمكن بها للثبط أن يزيل هذه الرائحة بصورة منهجية.
Refactoring for the single Responsibility Principle
تحديد الانتهاكات
وأهم أعراض انتهاك قانون الملكية الفكرية هي فئة لها أكثر من سبب واحد للتغيير، فعلى سبيل المثال، فإن فئة اسمها [(FLT:0]) التي تحسب المجاميع، وتشكل الفواتير للعرض، وتحتفظ بها لقاعدة البيانات، وترسل رسالة إلكترونية تحمل على الأقل أربع مسؤوليات، وأي تغيير في حساب الضرائب، أو شكل خط الأساس، أو صف التخزين، أو البريد الإلكتروني، سيفرض تغييرا في نفس الوقت.
ولكشف هذه الانتهاكات، تبحث عن أسماء الطبقة التي تشمل كلمات مثل " المانجر " ، و " المورد " ، و " هيلبر " ، أو " حتى " ، وتخفي هذه الأسماء في كثير من الأحيان مسؤوليات متعددة، وتبحث أيضاً التوقيعات على أساليب الفصل: إذا أخذت بعض الأساليب بارامترات لا صلة لها بأساليب أخرى، فإن ذلك دليل آخر.
Refactoring Techniques
(أ) إن إعادة التصنيع الأولية للشركة هي ] فئة مختصرة ، وتضع مجموعة من الميادين والأساليب ذات الصلة التي تشكل مفهوماً متماسكاً وتنتقل إلى فئة جديدة، مثلاً، من فئة ، ويمكنك انتزاع ، [الفصل الجديد: 3]، و[الصف]:
إذا كان المنطق مبعثراً عبر بضعة أساليب بدلاً من طبقة كاملة، استخدم الطريقة المجردة ] لعزل جزء محدد من السلوك، مما يجعل المسؤولية أكثر وضوحاً ويهيئ الأساس لفئة مستخلصة في المستقبل.() أما التقنية ذات الصلة فهي أبعد طريقة عندما يبدو أن هناك طريقة مضيفة أخرى.
وثمة تقنية قيمة أخرى هي: Replace Inline Code with Function Call] عندما تلاحظ المنطق المتكرر الذي ينتمي إلى مجال مختلف، وبنقل ذلك المنطق إلى وظيفة أو درجة مخصصة، تخفض مساحة الطبقة الابتدائية وتجعل المسؤوليات واضحة، والهدف هو أن يمكن وصف كل فئة في جملة واحدة دون استخدام كلمة " و " .
تطبيق مبدأ الجاهزة/المغلق
إعادة تكييف المواد مع البوليمورفيا
ويحتوي الرمز الذي ينتهك الفينول الخماسي الكلور في كثير من الأحيان على بيانات كبيرة ][ ]الجبهة: ٥[ أو ]الجبهة: ٦[[ تحقق من نوع أو طريقة ما، مثلا، طريقة تحسب تكاليف الشحن على أساس خط ][ ]الجبهة: ٧[[، ][ ]الجبهة: ٨[، أو ]الجبهة التحريرية: ٩[ مغلقة[، مغلقة أمام أساليب الشحن الجديدة.
أما المعيار الذي يُعاد تصنيعه هنا فهو [مكيف مع البوليمورفيا ]، وتخلق طبقة قاعدة أو واجهة مختصرة (مثلاً، [(FLT:10])) بطريقة ، ويصبح كل أسلوب شحن من فئة فرعية محددة، ثم يستخدم الرمز الأصلي للشحن الجديد
استخدام الاستراتيجية ونواة الديكور
The Strategy pattern is the Class OCP driver. In the refactoring step, you typically start by defining the strategy interface, then move the conditional branches into separate strategy classes. Finally, you inject the appropriate strategy into the client at runtime. This often goes hand in hand with Extract grade
Decorator pattern helps when you need to add behavior to an object without changing its core class. For example, if you have a class that generates plain text, you can decorate it with or without modifying
حتى بدون أنماط تصميم رسمية، مبدأ تفضيل التكوين على الميراث يساعد مكتب المقارنات الدولية، عندما تحتاج إلى تغيير السلوك، تصنف الصف من أجزاء أصغر قابلة للتبادل بدلاً من أن تضع المنطق في الصف نفسه.
Refactoring to Support the Liskov Substitution Principle
العقود الفرعية والمعالجة
وكثيراً ما تكون انتهاكات الخطة الفرعية المؤقتة على سطح الأرض كطرائق في طبقة فرعية تُلقي استثناءات غير متوقعة، أو تعود عندما تعود طبقة القاعدة إلى جسم صالح، أو تضعف الشروط المسبقة وتعزز شروط ما بعد الولادة، والمثال الكلاسيكي هو فئة التي ترث من ولكنها تنتهك /[يحتفظ العقد المتساوي:20]
Infactoring step is to identify the contract. Use Introduce Assertion or ] Replace exception with Precondition check] to make implicit contracts explicit.
استخدام أوجه التدخل في تنفيذ نظام الأفضليات المعمم
A[F] practical approach is to Extractface from the base class whenever you detect subclass behavior that does not align. then have the client depend only on the interface. If the interface methods can satisfy them, LSP is automatically satisfied. For instance, rather than having a base class with a method
ومن بين الوسائل المفيدة الأخرى [Push Down Method]: إذا كان هناك أسلوب في طبقة أعلى لا يصلح إلا لبعض الفئات الفرعية، نقله إلى تلك الفئات الفرعية، وهذا يزيل خطر وراثة فئة فرعية بطريقة غير ملائمة، وبالمثل، ينتقل إلى حالة من أسفل الحقل .
تنفيذ الفصل بين الأوجه عن طريق المفاعل
تقطع وجوه فاتنة
[يعتمد] [يعتمد] [يعتمد] [في الحقيقة] على واجهة واحدة على أساليب كثيرة، وعلى سبيل المثال، يربط ، ، ، يُجبر على إصدار نص بسيط فقط لتنفيذ أساليب العصي.
وعند التقسيم، ابحث عن مجموعات من الأساليب التي كثيرا ما يستخدمها عملاء محددون، وهناك خطأ شائع يقسم إلى العديد من الوصلات البينية الصغيرة قبل الأوان، ويستهدف الوصلات البينية: واجهة تمثل قدرة واحدة قد يرغب بها العميل، فعلى سبيل المثال، قد يكون للوصلة البينية ] و؛ ويفصل هذان الأسلوبان منطقيان.
قانون العملاء القائم
(أ) إذا انقسمت الوصلة البينية، يجب أن تُعيد كل زبون إلى تنفيذ الوصلة الوصلة الوثيقة الصلة، وهذا مزيج من ] التوقيع على الطريقة الشائكة (للقيام بربط بين الأضيق) و] [يعتبر الغرامة] [للإنتاج الدور الجديد].
Refactoring for the dependent Inversion Principle
الإعالة
A typical DIP violation is a high-level class, such as , that directly immediatelyiates a low-level class like . This forces ] to depend on the concrete database implementation, making it hard to test and swap with an inmemory refactor:
حقن الإعالة وإبطال مفعول الرقابة
ويمكن استخدام تقنية إعادة التصنيع [المؤسسة ذات منهجية مصنعية] ] عندما لا يمكن بسهولة تغيير البنايات، وكبديل لذلك، تستخدم الاستدلال العالمي بالمسدس ] إذا تم الحصول على الإعالة من مخزن ثابت أو جهاز تسجيل للخدمات.
وبمجرد أن يكون لديك حقن بنائي، تنظر في تطبيق اعتراض مخرج ] إذا استخدمت المعالين بالحقن في العديد من الأساليب - التي يمكن أن تكون دلالة على أن الفئة نفسها لا تزال تتحمل مسؤوليات كثيرة جداً، وكذلك البحث عن فصول تعتمد على عدة خلاصات مختلفة ولكنها لا تستخدم إلا مجموعة فرعية من أساليبها؛ وقد يشير ذلك إلى حدوث انتهاك للنظام الداخلي جنباً إلى جنب مع برنامج المساعدة الإنمائية.
(ج) ينبغي أن تكون الخلاصات من اختصاص العميل، وليس من حيث التنفيذ الفعلي، وهذا معروف باسم تحويل الملكية ، وعند إعادة التصنيع، تحدد الوصلة (الوجهية) في نفس المجموعة التي تستخدمها الوحدة الرفيعة المستوى التي تستخدمها، وليس في الوحدة النموذجية المنخفضة المستوى، مما يضمن أن الوحدة الرفيعة المستوى لا تعتمد على شيء من عناصر المكتبة.
الاستنتاج: إعادة تصنيع الحبيت
إن تشجيع مبادئ SOLID من خلال إعادة التصنيع ليس نشاطا غير متكرر بل انضباطا مستمرا، فالتقنيات المبينة هنا - فئة الاستخراج، والاستبدال المشروط بالبوليمورفيا، والانتقال عبر الحدود، والاختبار بالمسدس، والكثير من العناصر الأخرى - هي لبنات البناء التي تتيح لك إعادة تشكيل قاعدة شفرة تدريجيا دون كسرها، وكل خطوة صغيرة تقلل من الديون التقنية، وتجعل المدونة أكثر فهما.
To deepen your practice, study the catalog of refactorings in Martin Fowler’s Refactoring website[FL:1]. For a detailed treatment of SOLID principles, Robert C. Martin’s ]Clean Code blog[Factor:3] provides excellent explanations.
ابدأوا بالصغر: اختيار صف واحد ينتهك نظام التعليم الخاص، وتطبيق نظام الخلاص، ومعرفة كيف يستجيب باقي النظام، والثقة التي ستكسبونها ستحفزكم على معالجة المبدأ التالي، مع الممارسة المتسقة، ستستوعبون هذه المفاعلات وتبدأون بتصميم شفرة تحترم بشكل طبيعي قاعدة البيانات الخاصة بدول العالم من البداية.