php - "if" versus "switch" -


संभव डुप्लिकेट:

मुझे हाल ही में बहुत अधिक परिस्थितियों का सामना करना पड़ा जहां मेरे पास बहुत ही सरल शर्त है और उन्हें आवेदन प्रवाह में शाखाएं की जरूरत है I मैं क्या कर रहा हूं पूरा करने का "सरल" साधन सिर्फ एक सादा पुराना अगर / elseif कथन:

  if ($ value == "foo") {// ...} अन्यथा ($ value == "बार") {// ...} elseif ($ value == "asdf" = $ value == "qwerty") { // ...}  

... लेकिन मैं भी ऐसा कुछ विचार कर रहा हूं:

  स्विच ($ value) {case "foo": // ...         टूटना; केस "बार": // ... ब्रेक; केस "क्ववेयर": मामला "asdf": // ...}  

यह थोड़ा कम पठनीय है, लेकिन शायद यह अधिक प्रदर्शनकारी है? हालांकि, जब सशर्त में अधिक से ज्यादा "या" भाव होते हैं, तो ऐसा लगता है कि स्विच स्टेटमेंट बहुत अधिक पठनीय और उपयोगी है:

  स्विच ($ value) {case "foo": // ...         टूटना; केस "बार": केस "बाज़": केस "sup": // ... break; मामला "एबीसी": मामला "डीईएफ़": मामला "जी": // ... तोड़; केस "क्व्वार": केस "asdf": // ...}  

मैंने भी विकल्प देखे हैं जहां कोड प्रवाह एरेज़ और फ़ंक्शंस का उपयोग करके बांटा गया है:

  function branch_xyz () {/ * ... * /} फ़ंक्शन branch_abc () {/ * ... *}} function / branch_def () {/ * ... * $} $ branches = array ("xyz" = & Gt; "branch_xyz", "abc" = & gt; "branch_abc", "def" = & gt; "branch_def"); यदि (isset ($ शाखाएं [$ मूल्य])) {$ fname = $ शाखाओं [$ value]; $ Fname (); }  

यह आखिरी विकल्प भी संभवतः कई फाइलों में वितरित होने का लाभ लेता है, हालांकि यह बहुत बदसूरत है।

आपको क्या लगता है कि इसके साथ सबसे अधिक फायदे हैं प्रदर्शन, पठनीयता, और उपयोग में आसानी के मामले में सबसे कम व्यापार अवसर?

व्यक्तिगत रूप से, मैं स्विच बहुत अधिक पठनीय ($ Foo == 'baz') {} elseif ($ foo == 'buz') {} Elseif ($ fou == 'haz') {}

इस तरह से संघनित, आप आसानी से यात्रा को देख सकते हैं (यह एक टाइपो, या एक ईमानदार अंतर)। लेकिन एक स्विच के साथ, आप निहित रूप से जानते हैं जिसका अर्थ था:

  स्विच ($ foo) {case 'bar': break; मामले 'बाज़': तोड़; मामले 'buz': तोड़; मामले 'हज़': तोड़; }  

प्लस, जो पढ़ने में आसान है:

  if ($ foo == 'bar' || $ foo == 'baz' || $ Foo == 'bat' || $ foo == 'buz') {}  

या

  केस 'बार': केस 'बाज़' : केस 'बल्ला': मामला 'बज़': तोड़;  

प्रदर्शन के दृष्टिकोण से ... ठीक है, प्रदर्शन के बारे में चिंता मत करो। जब तक आप तंग लूप के अंदर उनमें से कुछ हज़ारों नहीं कर रहे हों, तब तक आप अंतर को नहीं बता पाएंगे (अंतर शायद सूक्ष्म-दूसरी श्रेणी में हो, यदि कम नहीं है)।

विधि के लिए जाओ जो आपको सबसे पठनीय है यह महत्वपूर्ण हिस्सा है माइक्रो-ऑप्टिमाइज करने का प्रयास न करें। याद रखें, समयपूर्व अनुकूलन सभी बुराइयों की जड़ है ...


Comments

Popular posts from this blog

Eclipse CDT variable colors in editor -

wpf - Custom Message Box Advice -

AJAX doesn't send POST query -