ما هي أفضل طريقة للهجرة القائمة فوضوي webapp أنيقة MVC?[مغلقة]

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

سؤال

لقد انضممت إلى الشركة الجديدة قبل نحو شهر.الشركة بدلا من صغر حجم قوي جدا "البدء" يشعر.أنا أعمل كمطور جافا على فريق من 3 بائعين آخرين.الشركة في المقام الأول تبيع خدمة للشركات/الأعمال التجارية من نوع الناس لاستخدامها في التواصل مع بعضهم البعض.

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

تكرار وتزايد الإحباط أواجه هنا (و أنا سعيدة جدا مع وظيفة الكلي ، لذلك هذا ليس "أوه لا أنا لا أحب وظيفتي"من نوع آخر) هو عدم وجود أي أكبر تصميم أو هندسة هذا التطبيق على شبكة الإنترنت.التطبيق يتكون من عدة صفحات JSP, مع ما يقرب من أي منطق الموجودة في سيرفلتس أو الفول أو أي نوع آخر من الإطار.العديد من صفحات JSP الآلاف من الأسطر من التعليمات البرمجية ، فإنها jsp:include غيرها من صفحات JSP, منطق الأعمال هو مختلطة مع HTML ، وكثيرا ما تستخدم قصاصات من التعليمات البرمجية (مثل الحصول على خدمة ويب اتصال) هو قص ولصق بدلا من استخدامها ، وما إلى ذلك.وبعبارة أخرى ، فإن التطبيق هو الفوضى.

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

ما هي بعض من أفضل استراتيجيات لتمكين نقل تطبيق تعليمات البرمجة الأساسية في هذا الاتجاه ؟ كيف يمكنني كمطور تساعد حقا هذا التحرك على طول و بسرعة دون أن يبدو مثل رعشة-y الرجل الذي يأتي إلى وظيفة ويخبر الجميع أن ما كتبت هو الهراء ؟ هل هناك أي الاستراتيجيات التي ثبت نجاحها أو الخبرات التي كنت قد استخدمت في الوظيفة الخاصة بك تجربة عندما كنت قد واجهت هذا النوع من الأشياء ؟

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

المحلول

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

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

نصائح أخرى

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

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

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

هذا من الصعب القيام به في التطبيقات التي لا توجد إلا في "وضع الصيانة" لأنه من الصعب إقناع إدارة إعادة كتابة شيء هو بالفعل 'العمل' هو يستحق القيام به.وأود أن تبدأ من خلال تطبيق مبادئ MVC إلى أي رمز من أن كنت قادرا على العمل على (ie.الخطوة منطق الأعمال إلى شيء أقرب إلى نموذج ، تضع كل تخطيط/عرض التعليمات البرمجية في مكان واحد)

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

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

فإن أفضل طريقة هي أن طباعة رمز جعدة عنه ، ورمي بها.حتى لا إعادة تدوير الورق.

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

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

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

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

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

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

أشعر ألمك و أتمنى لك التوفيق في هذا المسعى.الآن عندما يكون لديك للحفاظ على تطبيق انتهاكات الربيع Webflow ، تلك قصة أخرى :)

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