2010-06-04 12 views
9

मैंने यहां प्रश्न पढ़ा है: Is it problematic to assign a new value to a method parameter?। हालांकि यह मेरे लिए स्पष्ट नहीं है की तरह कुछ कर रही है, तो:जावा पैरामीटर को नया मान निर्दिष्ट करते हुए, क्या यह एक बुरा अभ्यास माना जाता है?

public void myMethod(Object obj) { 
    doSomething(obj); 
    obj = getNewObj(); 
} 

या:

public void anotherMethod(Object obj) { 
    obj = doSomething(obj): 
} 

यह मूलतः है तो बस एक नया स्थानीय चर घोषित करने से बचने के लिए, यह इस लायक है ?, इस रूप में देखा है एक बुरा अभ्यास?

+0

मुझे लगता है कि आप इसे समझते हैं, लेकिन यह सुनिश्चित करने के लिए: आपके दो उदाहरण विधियों में 'ओबीजे' के लिए असाइनमेंट कुछ भी नहीं कर रहा है क्योंकि विधि में बाद में नई वस्तु का उपयोग नहीं किया जाता है। – ColinD

+0

हां मुझे यह पता है, लेकिन आपकी टिप्पणी के लिए धन्यवाद। विधि पैरामीटर के लिए हमेशा 'अंतिम' रखने के लिए –

उत्तर

8

यह एक बुरा अभ्यास है। आपको एक परिदृश्य खोजने के लिए कड़ी मेहनत की जाएगी जहां बलिदान की पठनीयता इसके लायक है। यह विशेष रूप से किसी भी व्यक्ति को भ्रमित कर देगा जो जावा की "मूल्य से गुजरती" नीति को समझ में नहीं आता है, जो दुख की बात है कि बहुत से लोग हैं।

+0

ए "जनसंख्या" किस जनसंख्या से नमूना है? मुझे लगता है कि यह संदर्भ पर बहुत निर्भर करता है। मायने रखता है उन लोगों की योग्यता का स्तर जो मेरे कोड का वारिस करेंगे। एक पेशेवर सेटिंग में कोड लिखते समय, मुझे लगता है कि मेरे उत्तराधिकारी यह मानना ​​उचित है कि विधि पैरामीटर कैसे पारित किए जाते हैं। इसके विपरीत, मैं यह नहीं मानूंगा कि एक ट्यूटोरियल के हिस्से के रूप में कोड पोस्ट करते समय - कहें - एक गेम प्रोग्रामिंग वेबसाइट। – meriton

+0

@meriton, मुझे यह प्रोग्रामर के बारे में सच लगता है जो पेशेवर रूप से बहुत अनुभवी हो सकते हैं, लेकिन जावा के लिए नया और पास-बाय-रेफरेंस भाषा के बैकग्राउड से आ रहे हैं (कम से कम यह एक विकल्प था)। – Yishai

+0

@meriton मैं एक बड़े निगम के लिए काम करता हूं और पेशेवर जावा डेवलपर्स के पास आ गया हूं जो इस अवधारणा को समझ नहीं पाते हैं। मैं इसे स्वीकार करने की कोशिश नहीं कर रहा हूं, लेकिन कई कंपनियों पर इसकी वास्तविकता है। – dbyrne

6

प्रदर्शन 0, पठनीयता -1। मेरी इच्छा है कि ग्रहण स्वचालित रूप से अंतिम टैग जोड़ सके।

+0

+1। हालांकि अगर यह विधि हस्ताक्षर अधिक पठनीय बनाता है तो संदिग्ध है। – Pindatjuh

+4

ग्रहण स्वचालित रूप से विधि पैरामीटर और स्थानीय चर के लिए 'अंतिम' जोड़ता है यदि आप इसके लिए _save action_ को परिभाषित करते हैं। – tscho

संबंधित मुद्दे

 संबंधित मुद्दे