ما هي الطريقة المفضلة لتنظيم عمليات الاسترجاعات؟ [مغلق
-
02-10-2019 - |
سؤال
في مشروع Android الخاص بي ، أقوم بتحديد بعض عمليات الاسترجاعات للعمل على نقرات الزر أو أحداث الاتصال أو أحداث واجهة المستخدم مثل dilaog.onshow (). لأغراض العرض التجريبي ، اخترت واجهة قابلة للتشغيل يجب إطلاقها من بعض رمز النشاط. مع جافا ، لدي طرق مختلفة للتعبير عن نفسي.
نمط واحد هو استخدام فئة مجهولة
runOnUiThread(new Runnable() {
public void run() {
doSomething();
}
});
private void doSomething() {
}
آخر - لتحديد فصل خاص داخلي ، أي
private DoSomething implements Runnable {
public void run() {
// do something;
}
}
...
runOnUiThread(new DoSomething());
آخر - لاستخدام عضو خاص ، مثل هذا:
private final Runnable doSomething = new Runnable() {
public void run() {
// do something;
}
}
...
runOnUiThread(doSomething);
إليكم آخر ، وهو ما أحبه بشكل أفضل ، لأنه من ناحية لا يبني بالفعل كائنات ما لم يستخدمها شخص ما حقًا ، لأنه يتجنب فئات إضافية ، لأنه قد يستغرق المعلمات إذا لزم الأمر.
private Runnable doSomething() {
return new Runnable() {
public void run() {
// do something;
}
}
}
...
runOnUiThread(doSomething());
أنا لا أبحث عن حجج الذوق أو المعتقد الديني ، ولكن من قابلية الصيانة والأداء. أود أن أتلقى تلميحات ونصائح يمكن أن تساعدني في تطوير تفضيلاتي الخاصة ، ربما - تفضيلات مختلفة وفقًا للظروف المعطاة.
المفسد:
لقد جعل تقدم جافا هذا السؤال عفا عليه الزمن ، انظر الإجابة المقبولة.
المحلول 5
اليوم ، عندما تتوفر Java 8 تقريبًا لنظام Android و Android Studio تلقائيا يتظاهر بأن Lambdas مدعوم بالفعل ، يبدو أن الحل المجهول (#1) هو الخيار الواضح:
نصائح أخرى
لا أعتقد أن هناك أي طريقة تصاعدية للتعامل مع عروض الاسترجاعات.
أنا عادة مضمّن فئة مجهولة أولاً. عندما تصبح الطريقة كبيرة جدًا ، أقوم باستخراج إنشاء الفصل في وظيفة منفصلة. عندما يصبح الفصل أكبر من اللازم ، أقوم باستخراج ملفه الخاص.
إذا كنت تستخدم IDE مثل Eclipse ، فيمكنك تنفيذ كل عمليات إعادة التجديد هذه تلقائيًا وأمان.
مثل Manuel Silva و @Toby Champion ، أنا لا أحب الفصول الداخلية المجهولة. يصعب قراءتها إلى حد ما ، ليست "OO" جدًا من حيث أنه لا يمكن تمديدها ، أو لا يمكن أن تنخفض ، أو المستوطنين أو أي شيء يجب تعديل السلوك ، وما إلى ذلك ، وغالبًا ما ينتهي بهم الأمر انتهاك المبدأ الجاف عند إضافة نفس الرمز في 27 مكانًا مختلفًا.
أميل إلى استخدام الأعضاء الخاصين (الخيار رقم 3) ، أو وظيفة خاصة (نمطك الرابع) عادة ما تسمي getAsrunnable ().
أنا جديد جدًا على Android ، لكن الفصول المجهولة تجعلني أشعر بالغثيان ويبدو أنك بديل لـ RunonuithRead على أي حال: Asynctask ، تمت مناقشته هنا:سؤال RunonuithRead
من وجهة نظري ، فإن فئة مجهولة تقلل حقًا من قابلية القراءة. نظرًا لأن رمز واجهة المستخدم غالبًا ما يكون مطوّلة للغاية ، فإن إضافة عمليات عودة مجهولة لكل زر يمكن أن تؤدي إلى فصول كبيرة جدًا. نتيجة لذلك ، أستخدم الطبقات الخاصة الداخلية.