سؤال

لدينا كمية كبيرة إلى حد ما من التعليمات البرمجية التي جعلت للتو قفزة إلى Java 5. لقد كنا نستخدم الأدوية الجنيسة في تلك المكونات التي تستهدف إصدارها في إصدار Java 5 ، ولكن الكود المتبقي ، بالطبع ، مليء بالخام الأنواع. لقد قمت بتعيين المترجم لإنشاء خطأ لأنواع RAW وبدأت في مسحها يدويًا ، ولكن على المعدل الحالي سوف يستغرق جداً وقت طويل للذهاب معها (هناك حول 2500 الأخطاء). وذلك مع الإصلاح العام المستنتج من Eclipse ، والذي يتخلص دائمًا من الأخطاء ، ولكنه غالبًا ما يولد رمزًا يحتاج إلى مزيد من العمل.

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

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

المحلول

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

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

نصائح أخرى

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

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

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

في مواجهة تحدٍ مماثل ، اخترنا الترقية إلى جافا 5 للأشكال الأدوية الوراثية فقط في الكود الذي تم تحريره لسبب آخر. لذا ، إذا كان لديك خطأ لإصلاحه في doitfast.java ، فاحقص doitfast.java لاستخدام جافا 5 نمط الأكواقع. سيتم تحديث مناطق الكود التي يتم تحريرها وتغييرها بانتظام بسرعة. بعد بضعة أسابيع أو أشهر من هذا السلوك ، يمكنك إعادة تقييم حالة قاعدة الكود الخاصة بك.

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

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

أنا أفهم مع الفكرة أنه يمكنك تحديد جميع الفصول الخاصة بك ، والمنفوث قائمة السياق وتحديد Refactor | generify. تم إنجاز المهمة. إنها بالتأكيد تجربة أكثر متعة للعمل مع التعليمات البرمجية المولدة (IMO).

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