2014-04-22 10 views
5

लगता है मैं दो काम करता है, boolean fA() और boolean fB()शॉर्ट सर्किटिंग को कैसे रोकें?

है अगर मैं एक और समारोह function(boolean b) लिख सकते हैं और मैं तो function(fA()||fB()) फोन fB() अगर fA() रिटर्न सच है, निष्पादित नहीं किया जा सकता है।

मुझे यह सुविधा पसंद है, लेकिन यहां मुझे निष्पादन के लिए दोनों कार्यों की आवश्यकता है। स्पष्ट कार्यान्वयन:

boolean temp = fA(); 
function(fB()||temp); 

बदसूरत है, और अतिरिक्त लाइन की आवश्यकता है इसे कम पठनीय बनाता है।

जावा में मूल्यांकन को मजबूर करने का एक तरीका है या इसे एक लाइन में हेल्पर वैरिएबल के बिना लिखने के अन्य सुरुचिपूर्ण तरीके से है?

+1

मुझे लगता है कि इस सवाल को "शॉर्ट सर्किटिंग को रोकना" कहा जाना चाहिए। – 2rs2ts

+4

नोट: यह आपके लिए बेहतर लग सकता है, लेकिन नए पाठकों के लिए यह निश्चित रूप से आपके इरादों को छुपाएगा। –

+0

@ 2rs2ts हाँ, यह बेहतर है। –

उत्तर

13

आप | बजाय उपयोग कर सकते हैं, यह short-circuit evaluation नहीं करता है:

function(fB() | fA()); 

यह सुनिश्चित करता है कि भले ही fB है true, fA बुलाया जाएगा।

+0

जो प्रतिभा है। धन्यवाद। अब मुझे आपके जवाब को स्वीकार करने से पहले 13 मिनट का इंतजार करना होगा। –

+2

मुझे यकीन नहीं है कि यह प्रतिभा है। कई प्रोग्रामर के लिए यह एक सीधी टाइपो जैसा दिखता है (जिसे वे बाद में 'ठीक कर सकते हैं')। '|' आमतौर पर बिट स्ट्रिंग/झंडे में हेरफेर करने के संदर्भ में प्रयोग किया जाता है। यदि ऐसा कोई मामला नहीं है तो आप शायद लंबे (बहु-पंक्ति) संस्करण के साथ एक टिप्पणी के साथ बेहतर हो सकते हैं। – Paul

+2

@ पॉल '|' इन मामलों में उपयोग करने के लिए है। क्लासिक उदाहरण जहां इसका उपयोग किया जाना चाहिए .. ** ** यह मामला है। आपकी टिप्पणी ओपी को गुमराह करती है, अगर कोई प्रोग्रामर इसे टाइपो मानता है, तो वह बेहतर प्रोग्रामिंग नहीं करेगा। – Maroun

1

आप कुछ चालाक कोड लिखने का प्रयास कर रहे हैं। यह दीर्घकालिक रखरखाव को नुकसान पहुंचाएगा और आपके चालाक कोड को ठीक करने और इसे तोड़ने की कोशिश कर रहे लोगों को जन्म दे सकता है।

boolean val = false; 
val |= fA(); 
val |= fB(); 
function(val); 

कोई सवाल ही नहीं क्या पैरामीटर val है, या यदि fB() बुलाया जा रहा है, जब अवास्तविक लौटाते fA() है:

सही बात करने के लिए यह बस और स्पष्ट रूप से तुम क्या कर रहे लिखने के लिए है। कोड अन्य चालाक संस्करणों की तुलना में कुछ और लाइनों को ले सकता है, लेकिन यह स्पष्ट और संक्षिप्त है और यह दिखाता है कि यह वास्तव में क्या कर रहा है और ऐसा करने का इरादा रखता है जो किसी अन्य कार्यक्षमता को सुझाव नहीं देता है।

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