2009-12-15 3 views
17

मुझे पता है कि इस तरह के रखवाली में के रूप में कई बार जब return; का उपयोग कर जावा, में एक उपयोगी उद्देश्य पूरा कर सकते हैं कर रहे हैं:रिटर्न टाइप शून्य के साथ विधियों को वापसी विवरण का उपयोग करना चाहिए?

public void foo(Bar bar) { 
    if(bar == null) 
     return; 

    // bar is not null, go ahead and do stuff with it 
} 

लेकिन क्या सिर्फ वापसी प्रकार void के साथ एक विधि के अंत तक पहुँचने के बारे में? उदाहरण के लिए,

public void printMenu() { 
    System.out.println("Print out some boilerplate info here, line 1."); 
    System.out.println("Print out some boilerplate info here, line 2."); 
    System.out.println("Print out some boilerplate info here, line 3."); 

    return; 
} 

शुद्ध शैली वरीयताओं के अलावा, के लिए या कि return; सहित के खिलाफ किसी भी कारण हैं? यदि ऐसा है, तो वो क्या हैं?

संपादित करें: ठीक है, इसे तुरंत उत्तर दिया गया। नीचे पोस्ट किए गए 15 उत्तरों को सारांशित करने के लिए: "नहीं"

+0

यदि कॉलिंग फ़ंक्शन या विधि की आवश्यकता नहीं है, तो इसे क्यों वापस करें? इसे छोड़कर भविष्य के डेवलपर्स के लिए कम भ्रम छोड़ देता है। –

उत्तर

47

शायद आपको कोड की लाइन से भुगतान किया जाता है?

अन्यथा अंत में खाली वापसी करने का कोई कारण नहीं है।

+1

अगर ब्लॉक के अंदर क्या है? शायद मेरे पास एक रिकर्सिव फ़ंक्शन है और मैं अपने फ़ंक्शन के शीर्ष पर बाहर निकलने की स्थिति चाहता हूं? – Zoidberg

+5

अब "अंत में" नहीं होगा, है ना? :-) 'void' फ़ंक्शन के लिए 'वापसी' का उपयोग करके 1000 नेस्टेड आईएफएस से बचने के तरीके के रूप में पूरी तरह स्वीकार्य है - ओपी ने अपने पहले उदाहरण में प्रदर्शन किया है। सवाल ब्रेस बंद करने से ठीक पहले 'रिटर्न' का उपयोग करने के बारे में था जो पूरी तरह से व्यर्थ है। – ChssPly76

+2

अन्य समान रूप से सही उत्तरों की तुलना में अधिक मजेदार होने के लिए स्वीकृत। – Pops

0

आपके उदाहरण में अंत में 'वापसी' व्यक्तिगत, टीम या संगठन शैली का विषय है। मैं व्यक्तिगत रूप से एक स्पष्ट वापसी करना पसंद करता हूं।

1

शुद्ध रूप से स्टाइल-आधारित प्रश्न, बिल्कुल कोई फर्क नहीं पड़ता (शायद एक अतिरिक्त एएसएम निर्देश, लेकिन कौन परवाह करता है?)। जो भी आप पहले कोड में स्थापित सम्मेलन के साथ अधिक आरामदायक महसूस करते हैं या पालन करते हैं।

+4

में कई बंद ब्रेसिज़ होते हैं यदि मुझे सही ढंग से याद किया जाता है तो वहां एक अंतर्निहित रिटर्न निर्देश होगा चाहे वह टाइप किया गया हो या नहीं। –

10

मैं उनसे बचता हूं, स्वयं। यह सिर्फ कोड की बेकार रेखा है। वास्तव में, PMD का एक नियम है जो ऐसे बेकार return कथनों की जांच करता है।

4

मुझे अंत में एक लटकती वापसी के लिए, एक शैली परिप्रेक्ष्य से भी कोई कारण नहीं दिखता है। आखिरकार, आप जानते हैं कि यह वापस लौटने जा रहा है क्योंकि वहाँ एक अंत ब्रेस है ...

0

मुझे लगता है कि व्यक्तिगत वरीयता के अलावा, कोई फर्क नहीं पड़ता। पहला मामला मुझे लगता है कि यह वैध है। अन्यथा आपको बयान को एक बड़े कथन में पैक करना चाहिए।

अंतिम उदाहरण वापसी अनिवार्य है।

1

मैं कहता हूं कि ऐसा कभी नहीं करें। शून्य फ़ंक्शन में वापसी विवरण केवल कथन के तर्क को तोड़ने के उद्देश्य से हैं। यदि आप ऐसा करना शुरू करते हैं तो आप अपने कोड के पाठकों को भ्रमित बयान भेजते हैं, तो आपको यह सोचने का लुत्फ उठाया जाएगा कि शायद होने पर आप कथन को भूल गए हैं। हमेशा पठनीयता के लिए जाओ।

0

मैं इसे एक स्थिरता बिंदु से बचूंगा। हमेशा इसे जोड़ने के लिए याद रखना आसान नहीं है।

0

यह किसी भी उद्देश्य की सेवा नहीं करता है लेकिन यदि आप इसे करना चाहते हैं (क्योंकि आपकी टीम में हर कोई ऐसा करता है या किसी भी कारण से), तो आप इसे कर सकते हैं। structured programming की

1

एक विचार था:

हर दिनचर्या ठीक एक प्रवेश बिंदु है और वास्तव में एक निकास बिंदु होना चाहिए।

यदि आप उस नीति की सदस्यता लेते हैं, तो return कथन नियमित रूप से बाहर निकलने का एकमात्र तरीका इंगित करता है।

प्रैक्टिस में, वह नीति कोड स्पष्ट नहीं करती है, और इसे 1 9 70 के दशक से अधिकतर अनदेखा कर दिया गया है। यदि आप अन्य दिनचर्या में एकाधिक रिटर्न स्टेटमेंट्स की अनुमति देते हैं, तो आपको शून्य रिटर्न स्टेटमेंट्स की अनुमति देनी चाहिए जहां यह अधिक समझ में आता है।

1

मुझे लगता है कि अनावश्यक बयान सिर्फ शोर हैं, इसलिए मैं अंत में उस वापसी को नहीं जोड़ूंगा। ऐसा कहा जा रहा है कि, अगर मैं अपनी आवश्यकताओं को पूरा नहीं करता है या इससे भी बेहतर, मैं विधि की शुरूआत में रिटर्न जोड़ता हूं, तो मैं अवैध अर्ग्यूमेंट अपवाद अपवादों को फेंक दूंगा।

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