سؤال

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

في أي نقطة تصبح إعادة البناء أقل منطقية من إعادة البناء الكاملة؟

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

المحلول

وجويل كتب مقالة لطيفة حول هذا الموضوع بالذات:

أشياء يجب أبدا هل، الجزء 1

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

وكتاب وجدت من المفيد جدا هو العمل بشكل فعال مع رمز تراث التي كتبها مايكل C. الريش. ويقدم استراتيجيات وطرق الاقتراب كود إرث حتى القبيح حقا.

نصائح أخرى

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

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

ونهج إعادة بيع ديون تدريجي أيضا قد يساعد على ضمان أن هناك دائما منتج المتاحة والتي يمكن شحنها (وأنه يتحسن باستمرار).

وهناك مادة لطيفة على شبكة الإنترنت حول كيف نتسكيب 6 كتب من الصفر، وكان الأعمال الحكيم فكرة سيئة .

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

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

ولكن، في بيئة محدودة زمنيا المهنية، عليك أن تذهب دائما مع كل ما يكلف الشركة أقل قدر من المال (لنفس مكافأة) على المدى الطويل، وهو ما يعني اختيار أيهما يأخذ وقتا أقل.

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

وعندما تنفق المزيد من الوقت إعادة الهيكلية من الكتابة فعلا التعليمات البرمجية.

وعند نقطة حيث لا البرمجيات تفعل ما يفترض القيام به. إعادة بيع ديون (تغيير رمز من دون تغيير وظيفة) من المنطقي إذا وفقط إذا كانت وظيفة هو "على النحو المنشود".

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

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

وتطبيق هي مواصفات. إذا كان لديك إعادة كتابة من الصفر هل من المرجح أن تصل إلى طريق الكثير من الحشرات غدرا لأنه "لم يكن أحد يعرف أن الدعوة إلى هذه الوظيفة كان من المفترض أن يعود 3 في هذه الحالة محددة جدا" (السلوك غير الشرعيين ...).

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

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

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

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

العم بوب يزن كالآتي:

متى تكون إعادة التصميم هي الإستراتيجية الصحيحة؟

أنا سعيد لأنك سألت هذا السؤال.ها هي الإجابة. أبداً.

أنظر، لقد أحدثت الفوضى، الآن قم بتنظيفها.

وخيار واحد يتمثل في كتابة الاختبارات وحدة لتغطية الطلب الحالي ومن ثم البدء في ريفاكتور ذلك شيئا فشيئا، وذلك باستخدام وحدة الاختبارات للتأكد من أن كل شيء يعمل كما كان من قبل.

في عالم مثالي وكنت قد سبق وحدة الاختبارات للبرنامج، ولكن نظرا تعليقك عن نوعية التطبيق انا التخمين كنت لا ...

وأية وثيقة، لا الكاتب الأصلي، أي حالة اختبار، وحفنة من البق المتبقية.

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

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

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

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