संबंधित प्रश्न: Benefits of using short-circuit evaluation, Why would a language NOT use Short-circuit evaluation?, Can someone explain this line of code please? (Logic & Assignment operators)शॉर्ट-सर्किट कोड का उपयोग क्यों करें?
वहाँ शॉर्ट सर्किट कोड का उपयोग कर एक भाषा के लाभों के बारे में सवाल कर रहे हैं, लेकिन मैं क्या एक प्रोग्रामर के लिए लाभ कर रहे हैं सोच रहा हूँ? क्या यह सिर्फ कोड को थोड़ा और संक्षिप्त बना सकता है? या प्रदर्शन कारण हैं?
मैं स्थितियों में, जहां दो संस्थाओं वैसे भी मूल्यांकन की आवश्यकता है उदाहरण के लिए, के बारे में पूछ नहीं कर रहा हूँ: मेरे लिए
if($user->auth() AND $model->valid()){
$model->save();
}
तर्क वहाँ स्पष्ट है - के बाद से दोनों सही होने की जरूरत है, आप और अधिक को छोड़ सकते हैं महंगा उपयोगकर्ता सत्यापन यदि उपयोगकर्ता डेटा को सहेज नहीं सकता है।
यह भी एक (मेरे लिए) स्पष्ट उद्देश्य होता है:
if(is_string($userid) AND strlen($userid) > 10){
//do something
};
क्योंकि यह एक गैर-स्ट्रिंग मान के साथ strlen()
कॉल करने के लिए बुद्धिमान नहीं होगा।
जो मैं सोच रहा हूं वह शॉर्ट-सर्किट कोड का उपयोग है जब यह किसी अन्य कथन को प्रभावित नहीं करता है। उदाहरण के लिए, Zend आवेदन डिफ़ॉल्ट सूचकांक पेज से:
defined('APPLICATION_PATH')
|| define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));
यह हो सकता था:
if(!defined('APPLICATION_PATH'))
define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));
तो क्यों छोटी का उपयोग करें:
if(!defined('APPLICATION_PATH')){
define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));
}
या एक भी बयान के रूप में सर्किट कोड? नियंत्रण संरचनाओं के स्थान पर तर्क ऑपरेटरों का उपयोग करने के लिए 'कूलनेस' कारक के लिए? बयान अगर नेस्टेड को मजबूत करने के लिए? क्योंकि यह तेज़ है?
गति पर एक नोट: यदि आपके पास आधे रास्ते सभ्य कंपाइलर है, तो यह बयान और शॉर्ट सर्किट के लिए एक ही मशीन कोड उत्पन्न करेगा। यदि आप नहीं करते हैं, तो यह पर्याप्त रूप से खराब कोड का उत्पादन कर रहा है कि शोर में कुछ स्रोत-स्तरीय माइक्रोप्टाइमाइज़ेशन से कुछ अतिरिक्त चक्र खो जाएंगे। बहुत सरल, यह महत्वपूर्ण नहीं है। –
@ डेविड क्या यह स्क्रिप्टिंग भाषाओं के लिए भी सच होगा? –
@ टिमलिटल व्याख्या की गई भाषाओं में आप अलग-अलग पार्सिंग और व्याख्या के कारण अलग-अलग व्यवहार कर सकते हैं। कोड के पास चलाने का अवसर होने से पहले कंपाइलर्स को ऐसा करने का लाभ होता है। –