كيفية إعادة البناء على الأدوية العامة من الفئة التي ترث من CollectionBase؟

StackOverflow https://stackoverflow.com/questions/98426

سؤال

أنا أعمل على تطبيق يتكون من حوالي 250.000 سطر من التعليمات البرمجية.أنا حاليًا المطور الوحيد الذي يعمل على هذا التطبيق الذي تم إنشاؤه في الأصل في .NET 1.1.منتشرة طوال الوقت وهي فئة ترث من CollectionBase.كافة مجموعات قاعدة البيانات ترث من هذه الفئة.أنا أفكر في إعادة البناء للوراثة من قائمة المجموعة العامة بدلاً من ذلك.وغني عن القول أن كتاب إعادة البناء لمارتن فاولر لا يحتوي على أي اقتراحات.هل يجب أن أحاول إعادة البناء هذا؟إذا كان الأمر كذلك، ما هي أفضل طريقة لمعالجة هذا إعادة البناء؟

ونعم، هناك اختبارات وحدة في جميع أنحاء، ولكن لا يوجد فريق ضمان الجودة.

هل كانت مفيدة؟

المحلول

250.000 سطر هو عدد كبير لإعادة البناء، بالإضافة إلى أنه يجب عليك مراعاة العديد مما يلي:

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

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

إذا كان الجواب 2 بنعم، فما عليك سوى التفرع والبدء في إعادة البناء، بالاعتماد على اختبارات الوحدة تلك.

من شأن قسم ضمان الجودة أن يساعد كثيرًا أيضًا، حيث يمكنك إرسال الكود الجديد إليهم لاختباره.

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

نصائح أخرى

لا.ما لم يكن لديك مبرر تجاري جيد لوضع قاعدة التعليمات البرمجية الخاصة بك من خلال هذا التمرين.ما هو التوفير في التكاليف أو الإيرادات الناتجة عن إعادة البناء لديك؟لو كنت مديرك لربما أنصح بعدم القيام بذلك.آسف.

ما مدى تعرض CollectionBase من الفئة الموروثة؟
هل هناك أشياء يمكن أن تفعلها الأدوية العامة بشكل أفضل من CollectionBase؟

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

ولكن إذا كان هناك الكثير من التعرض من هذه الفئة، فقد يتعين عليك بدلاً من ذلك التعامل مع هذا التعرض باعتباره عقدًا ومحاولة استبعاد التعرض.

اذا أنت نكون سوف تستمر في ذلك، لا تستخدم قائمة <ت>.بدلا من ذلك، استخدم System.Collections.ObjectModel.جمع <ت>, ، والذي يعد بمثابة خليفة روحي لـ CollectionBase.

ال Collection<T> توفر الفئة طرقًا محمية يمكن استخدامها لتخصيص سلوكها عند إضافة العناصر وإزالتها، أو مسح المجموعة، أو تعيين قيمة عنصر موجود.إذا كنت تستخدم List<T> لا توجد طريقة لتجاوز Add() طريقة للتعامل عندما يقوم شخص ما بالإعلان إلى المجموعة.

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

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

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

وأنا أتفق مع توماس.

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

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

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top