2015-04-15 9 views
6

मैं कई परियोजनाओं में सच्चे पाश के दौरान उपयोग करता हूं। यह मुझे अच्छी तरह से सेवा करता है और यह अधिक जटिल नहीं है। तो, वास्तविक लूप असीमित रूप से चल रही पृष्ठभूमि प्रक्रियाओं के दौरान उपयोग करना एक बुरा विचार क्यों है। आपके उत्तरों के लिए धन्यवाद।क्यों (सच) बुरा अभ्यास है?

+4

'जबकि (सत्य) 'स्वाभाविक रूप से खराब अभ्यास नहीं है। 'जबकि (सत्य) 'के कुछ उपयोग खराब अभ्यास हैं, ज्यादातर व्यस्त-इंतजार करते हैं जहां अन्य प्रकार की प्रतीक्षा अधिक उपयुक्त होगी, लेकिन' जबकि (सत्य) 'के साथ कुछ भी गलत नहीं है। – user2357112

+2

आप क्यों कहते हैं कि यह एक बुरा विचार है? – user2357112

+0

जब तक आप जानते हैं कि आप क्या कर रहे हैं और आपके पास इससे बाहर निकलने का एक साफ तरीका है, यह एक बुरा अभ्यास नहीं है। – Morb

उत्तर

4

मेरे परियोजना के नेता मेरी कोड में पाश इस तरह की अनुमति नहीं है, वह उनका तर्क है यह द्वारा while(!exit_flag)

उसी बहस का मुद्दा है प्रतिस्थापित किया जाना है । while (!exit_flag) बताता है कि लूप में प्राकृतिक निकास की स्थिति है जो यह किसी विशिष्ट बिंदु पर ही पहुंच जाएगी, उदा। कुछ 0 से 100 तक गिनती है और फिर लूप छोड़ती है। हालांकि, यदि आप एक स्थायी डेमॉन या इवेंट लूप बनाने के लिए इस लूप को लिख रहे हैं, तो इस लूप का बिंदु प्रोग्राम को अनिश्चित काल तक चलाना है। कुछ भी नहीं कहता अनिश्चित कालwhile (true) से बेहतर है।

दोनों के बीच कोई वास्तविक तकनीकी अंतर नहीं है; यह केवल पठनीयता और इरादे की अभिव्यक्ति का मामला है। बेशक, आपको इसे उन लोगों के साथ स्क्वायर करना होगा जो अंत में उस कोड को पढ़ेंगे। यदि उनकी नीति while (!exit_flag) है, तो हो।

4

यह एक बुरा अभ्यास नहीं है, इसका मतलब यह है कि आपने अपना कोड नहीं सोचा था।

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

var i = 0; 
while(true){ 
    i++; 
    if(i == 100) 
     break; 
} 

यह ठीक कोड है। लेकिन अब यह है:

var i = 0; 
while(i != 100){ 
    i++; 
} 

दोनों ही तरीकों से सही हैं, लेकिन अगर किसी ने आपका कोड पढ़ रहा है, यह देखने के लिए जब पाश-बार दोहराना बंद हो जाएगा अगर यह हालत में सही नहीं है बहुत आसान है।

4

एचएम, उस व्यक्ति से पूछें जिसने दावा किया कि यह "एक बुरा विचार" था।

मैं क्या सोच सकता हूं कि किसी भी लूप को अनिश्चित काल तक चलना चाहिए, बेशक, आप निश्चित रूप से अपने प्रोग्राम को हमेशा के लिए चलाने की उम्मीद करते हैं।

यदि समय समाप्त करने के लिए कोई मानदंड नहीं दिया गया है, तो लूपिंग कोड के अंदर लूप छुपा हुआ कुछ भी समाप्त करने के लिए कुछ अन्य प्रकार की व्यवस्था की आवश्यकता होगी, जैसे रिटर्न, ब्रेक या (यक - बेसिक - लेकिन शायद यही वह जगह है जहां कथन उत्पत्ति - लूप को समाप्त करने के लिए लूप के बाहर कुछ "गोटो" कथन कूदते हैं)।

इस तरह के कोड को पढ़ने और डीबग करना मुश्किल हो सकता है, और पहले यह संकेत था कि एक प्रोग्रामर को स्वच्छ कोड लिखने के बारे में ज्यादा परवाह नहीं है। फिर भी आजकल संचालित चालित अनुप्रयोगों और संरचित त्रुटि प्रबंधन के साथ (देखें ... पकड़ें संरचनाएं) किसी भी प्रकार के लूप से बाहर निकलने के तरीकों को पढ़ने के लिए साफ और आसान तरीके हैं, इसलिए जबकि (सत्य) परेशानी के बिना उपयोग किया जा सकता है।

Greetz

अलीना

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