सभी एरलांग किताबें कहती हैं कि export_all खराब अभ्यास है लेकिन कोई कारण न दें। अंत में अधिकांश मॉड्यूल संकलन (export_all) के साथ अपने अधिकांश समय व्यतीत करते हैं क्योंकि सहायक कार्यों को हटाने के लिए मॉड्यूल की सूची को लगातार अद्यतन करना एक परेशानी है। क्या यह बुरा अभ्यास है क्योंकि मुझे उन कार्यों के बारे में परवाह करना चाहिए जिन्हें मैं अन्य डेवलपर्स के सामने पेश करता हूं? या यह बुरा अभ्यास है क्योंकि मॉड्यूल के कार्यों की संख्या में कुछ प्रकार की प्रदर्शन लागत है, शायद हॉट कोड लोडिंग जैसी चीजों के कारण। यदि मॉड्यूल को बहुत सारे कार्यों के साथ भरने के लिए कोई प्रदर्शन मारा जाता है, तो यह कितना बुरा है?क्यों -compile (export_all) खराब अभ्यास है?
उत्तर
कई कारणों के लिए:
स्पष्टता: यह जो कार्यों मॉड्यूल के बाहर उपयोग के लिए लक्षित कर रहे हैं देखना आसान हो जाए।
जब आप एरलांग खोल में पूरा करते हैं तो आपको केवल निर्यात किए गए कार्यों की सूची मिलती है और कोई अन्य नहीं। जब आप मॉड्यूल को दोबारा प्रतिक्रिया देते हैं, तो आप जानते हैं कि आप कौन से फ़ंक्शन सुरक्षित रूप से बाहरी उपयोगकर्ताओं के बिना उनका नाम बदल सकते हैं।
कोड गंध: आपको अप्रयुक्त कार्यों के लिए चेतावनियां मिलती हैं।
इसलिए आप मृत कोड से बचेंगे।
अनुकूलन: संकलक अधिक आक्रामक अनुकूलन करने में सक्षम हो सकता है यह जानकर कि सभी कार्यों को निर्यात नहीं किया जाना चाहिए।
क्या आपके पास अनुकूलन दावा का बैक अप लेने का कोई स्रोत है? दुर्भाग्यवश – jocull
दुर्भाग्यवश नहीं, लेकिन मुझे लगता है कि यह केवल एक ही स्थान पर उपयोग किए जाने वाले कार्यों को इनलाइन करने में सक्षम होगा, उदाहरण के लिए, यदि यह जानता है कि उन्हें मॉड्यूल के बाहर से कभी भी नहीं बुलाया जाएगा। –
इसके अलावा, यह डायलजर को उपयोग करने में कठोर बनाता है। @ जोकुल इन जो आर्मस्ट्रांग की पुस्तक, प्रोग्रामिंग एरलांग, दूसरा संस्करण, पृष्ठ। 164, वह कहता है कि जब आप कम फ़ंक्शन निर्यात करते हैं तो "कंपाइलर बहुत बेहतर कोड उत्पन्न कर सकता है"। – JDong
जबकि मुझे यह सुनिश्चित नहीं है कि -compile(export_all).
का उपयोग करने के कोई व्यावहारिक प्रदर्शन प्रभाव हैं, तो मुझे संदेह है कि वे देखभाल करने के लिए पर्याप्त महत्वपूर्ण हैं।
हालांकि, निर्यात की सूची स्पष्ट रूप से घोषित करने का लाभ है। ऐसा करने से, .erl
फ़ाइल के पहले पृष्ठ को देखकर हर कोई मॉड्यूल के इंटरफ़ेस को समझ सकता है। साथ ही, जैसा कि हम लिखने के लिए कई अन्य चीजों के साथ, मॉड्यूल इंटरफ़ेस की स्पष्ट घोषणा इसकी स्पष्टता को बनाए रखने में मदद करती है।
इसके साथ ही कहा, जब मैं एक नया Erlang मॉड्यूल पर काम शुरू करने के बाद इंटरफ़ेस परिपक्व हो जाता है मैं हमेशा -module(...). -compile(export_all).
टाइप पर्याप्त मैं एक स्पष्ट -export([...])
जोड़ने जबकिexport_all
संकलन विकल्प रखे हुए हैं।
'comcomile (export_all) 'का उपयोग करने के कोई प्रदर्शन प्रभाव नहीं हैं। कंपाइलर सभी कॉल को समान करता है और निर्यात को स्पष्ट निर्यात के साथ ही किया जाता है। – rvirding
परिभाषित सूची होने के कारण कौन से फ़ंक्शन बाहरी हैं, और इसलिए कौन से आंतरिक हैं, भविष्य में आपके कोड पर काम करने वाले किसी भी व्यक्ति के लिए बेहद उपयोगी है। मैंने हाल ही में कुछ पुराने कोड को दोबारा शुरू कर दिया है, और अधिकांश मॉड्यूल में export_all का उपयोग परेशानियों का निरंतर स्रोत रहा है।
- 1. वैश्विक चर क्यों खराब अभ्यास माना जाता है?
- 2. जावास्क्रिप्ट खराब अभ्यास
- 3. यूआरएल पोस्ट खराब खराब अभ्यास एनकोडेड?
- 4. सीक खराब क्यों है?
- 5. विजुअल स्टूडियो में परिपत्र संदर्भ क्यों खराब अभ्यास हैं?
- 6. उद्देश्य-सी में एक खराब अभ्यास में subclassing है?
- 7. लॉजिकल ऑपरेटर ओवरलोडिंग खराब अभ्यास माना जाता है?
- 8. मुख्य() खराब क्यों प्रयास करें?
- 9. जावास्क्रिप्ट में खराब अभ्यास माना जाता है के साथ '(सूची में var आइटम)' क्यों है?
- 10. PHP और कस्टम HTTP शीर्षलेख, खराब अभ्यास?
- 11. कक्षा का दायरा टाइपपीफ खराब अभ्यास?
- 12. एसक्यूएल सर्वर खराब और सर्वोत्तम अभ्यास
- 13. क्यों फ्रेम खराब हैं
- 14. ग्लोबल्स क्यों खराब हैं?
- 15. आउटपुट बफरिंग का उपयोग खराब अभ्यास माना जाता है?
- 16. इस तरह के जावा अपवाद शैली खराब अभ्यास है?
- 17. नंबरफॉर्मेट अपवाद को खराब अभ्यास कर रहा है?
- 18. php सिंगलटन डेटाबेस कनेक्शन, क्या यह कोड खराब अभ्यास है?
- 19. jQuery खराब अभ्यास में $() शॉर्टकट का उपयोग कर रहा है?
- 20. जावास्क्रिप्ट खराब अभ्यास में लेबल का उपयोग कर रहा है?
- 21. जावास्क्रिप्ट कन्स्ट्रक्टर में साइड इफेक्ट्स खराब अभ्यास का उपयोग क्यों कर रहा है?
- 22. जावा में स्ट्रक्चर खराब अभ्यास के रूप में कक्षा का उपयोग क्यों कर रहा है?
- 23. नकारात्मक आईडी या शून्य को खराब अभ्यास क्यों माना जाता है?
- 24. "भूल गए पासवर्ड" क्यों खराब है?
- 25. डब्ल्यूसीएफ चैनल कैशिंग क्यों खराब चीज है?
- 26. लिंकर अनुकूलन इतना खराब क्यों है?
- 27. मिक्सिंग डीबग और रिलीज लाइब्रेरी/बाइनरी - खराब अभ्यास?
- 28. अप्रयुक्त चर क्यों खराब हैं?
- 29. स्थितिगत प्रश्न क्यों खराब हैं?
- 30. आवेदन है। खराब करें?
क्योंकि इंजीनियर को रिवर्स करना आसान है और अनावश्यक रूप से आवश्यकतानुसार बड़े निष्पादन योग्य उत्पादन का उत्पादन करना आसान है। निष्पादन योग्य अधिकार में किसी को भी आपके फ़ंक्शन नामों की आवश्यकता नहीं है? – fazo