मैं यहोशू बलोच के प्रभावी जावा, Item 52: Refer to objects by their interfaces
द्वारा दिए गए सलाह करने के लिए उपयोग में अपने इंटरफेस द्वारा वस्तुओं देखना चाहिए।हमने Android प्लेटफ़ॉर्म
हालांकि, नमूना कोड के अधिकांश में एंड्रॉयड के साथ आता है, मुझे पता है निम्नलिखित कोड काफी आम है।
private ArrayList<Integer> mPhotos = new ArrayList<Integer>();
मैं समझता हूँ कि इस प्रदर्शन के अनुकूलन उद्देश्य की वजह से है, के रूप में निम्न कोड में धीमी हो जाएगा।
private List<Integer> mPhotos = new ArrayList<Integer>();
हालांकि, क्या ऐसी अनुकूलन तकनीक अभी भी वैध है? के रूप में अगर मैं एक JIT बिना http://developer.android.com/guide/practices/design/performance.html
से पढ़ने के उपकरणों पर, यह सच है कि एक सटीक प्रकार के बजाय एक इंटरफेस के साथ एक चर के माध्यम से तरीकों लागू थोड़ा और अधिक कुशल है। (इसलिए, उदाहरण के लिए, मानचित्र मानचित्र की तुलना में हैश मैप मानचित्र पर विधियों को आमंत्रित करना सस्ता था, भले ही दोनों स्थितियों में नक्शा एक हैश मैप था।) ऐसा नहीं था कि यह 2x धीमी थी; वास्तविक अंतर 6% धीमी गति से अधिक था। इसके अलावा, जेआईटी दो प्रभावी ढंग से अलग करने योग्य बनाता है।
हम अपने उपकरणों मान JIT बिना कर रहे हैं, और इंटरफेस के बिना वस्तुओं का उल्लेख करने की जरूरत है? या, क्या हम सिर्फ यहोशू ब्लोच की सलाह को अपनाएंगे?
कारण ठोस नहीं है। निजी चर के साथ इसका कोई लेना-देना नहीं था। जोशुआ ब्लोच द्वारा प्रदान किया गया उदाहरण भी निजी है। –
तो यहोशू ब्लोच गलत है। – irreputable
मुझे लगता है कि आपको लगता है कि कहने के लिए काफी घमंडी है। आपको कम से कम अपने बयान का समर्थन करने के लिए कुछ असली दुनिया उदाहरण और तथ्य प्रदान करने की आवश्यकता है। कम से कम जोशुआ ब्लोच के प्रभावी जावा में, वह एक बहुत अच्छा असली दुनिया उदाहरण प्रदान करता है क्यों इंटरफ़ेस का उपयोग करना बेहतर है। –