सी या सी ++ जैसी भाषा में हेडर फ़ाइलों का उपयोग करने के फायदे और नुकसान जावा जैसी भाषा बनाते हैं? मुझे लगता है कि कक्षाओं को बाहर से डिजाइन किया जाना चाहिए, इसलिए हेडर फाइलें रखना अच्छा होता है और कार्यान्वयन विवरणों के माध्यम से नहीं जाना चाहिए। हालांकि, फिर, प्रत्येक समारोह घोषणा दो फाइलों में डुप्लिकेट की जाती है। यदि आज सी और सी ++ का आविष्कार किया गया तो क्या वे हेडर फाइलों का उपयोग करेंगे? क्या यह तंत्र पुराना या आवश्यक है?शीर्षलेख फ़ाइलों के फायदे/नुकसान
उत्तर
एरिक Lippert, जो यह बहुत अच्छी तरह से कहते हैं द्वारा एक संबंधित blog post से लिया:
मैं बराबर सवाल क्यों करता है सी ++ जरूरत हैडर फ़ाइलों पूछा होता? शीर्षलेख फाइलें विफलता की संभावित बिंदु की तरह लगती हैं; सभी समय मैं सी ++ कोड संपादित करता हूं और विधि के हस्ताक्षर को बदलता हूं; अगर मैं हेडर फ़ाइल को अपडेट करता हूं, तो कोड संकलित नहीं होता है और अक्सर गुप्त त्रुटि संदेश देता है। उम्मीद है कि यह बड़ी लागत वास्तव में आपको कुछ खरीदती है।
यह कंपाइलर लेखक को एक चीज़, और उपयोगकर्ता को एक चीज़ खरीदता है।
क्या यह उपयोगकर्ता खरीदता है कि आप एक "obj" फ़ाइल में प्रत्येक व्यक्ति "cpp" फ़ाइल संकलन कर सकते हैं स्वतंत्र रूप से, प्रदान की आप सभी आवश्यक हेडर होता है। उन सभी निकायों को उत्पन्न करने के लिए आवश्यक है जो किसी दिए गए सीपीपी फ़ाइल में हैं हेडर के सेट से प्राप्त किया जा सकता है। इसका अर्थ है कि बिल्ड सिस्टम को केवल उन सीपीपी फ़ाइलों को दोबारा बदल सकता है, जो प्रदान किए गए हैं, बशर्ते कोई हेडर बदल नहीं गया हो।
यह कंपाइलर लेखक क्या खरीदता है है कि प्रत्येक फ़ाइल को "एक पास" में संकलित किया जा सकता है। क्योंकि हर प्रकार और विधि घोषणा से पहले अपनी पहली उपयोग संसाधित किया जाता है, संकलक बस फ़ाइल, सभी शामिल हेडर में पुल के ऊपर से शुरू कर सकते हैं, और , शीर्ष नीचे से आगे बढ़ना थूकना ओबीजे फ़ाइल के रूप में यह जाता है, कभी भी वापस जाने और पर वापस जाने के लिए कुछ भी पहले देखा गया है।
यह सी # (जिसके बारे में ब्लॉग पोस्ट है) और जावा, जो कि एक बहुत करीबी रिश्तेदार है, के विपरीत है।
इस बारे में दिलचस्प बात यह है कि यह उपयोगकर्ता को खरीदता है। यह उपयोगकर्ता को फ़ाइल द्वारा फ़ाइल को फिर से संकलित करने की अनुमति देता है। लेकिन यह वास्तव में केवल सी और विशेष रूप से सी ++ के असाधारण संकलन/लिंक समय की वजह से आवश्यक है। तो मेरे दिमाग में यह वास्तव में संकलक के बारे में सब कुछ है और गरीब डेवलपर द्वितीय श्रेणी का नागरिक है। –
जावा सी # के करीबी रिश्तेदार है। जावा सी # का पिता है। – irreputable
@irreputable: इससे मुझे हंसी हुई। यह भी एक राय है जो मैं साझा करता हूं। – Jon
संक्षेप में, सी या सी ++ हेडर फाइलों में अलग-अलग फ़ाइलों को सामान्य परिभाषाओं या घोषणाओं को साझा करने की अनुमति मिलती है।
जावा में सब कुछ एक वस्तु है, इसलिए वस्तुओं को छोड़कर कुछ भी साझा करने की कोई अवधारणा नहीं है। प्रत्येक वस्तु एक फ़ाइल है; यदि आप ऑब्जेक्ट तक पहुंचना चाहते हैं, तो आप फ़ाइल आयात करते हैं।
इंटरफ़ेस और कार्यान्वयन को अलग करना अभी भी एक अच्छा विचार है। लेकिन यह शारीरिक अलगाव नहीं होना चाहिए। जावा में आप javadoc से इंटरफ़ेस देख सकते हैं। जावा आईडीई आमतौर पर एपीआई संरचनाओं को प्रदर्शित कर सकते हैं, और वे ब्लॉक को फोल्ड कर सकते हैं। कोई अनिवार्य कारण नहीं है जिसके लिए शारीरिक अलगाव की आवश्यकता है। सी दशकों पहले आविष्कार किया गया था इसलिए हमें इसे लेने की जरूरत नहीं है।
- 1. शीर्षलेख फ़ाइलों के बीच चक्रीय निर्भरता
- 2. सी शीर्षलेख फ़ाइलों के बिना कार्य
- 3. शीर्षलेख फ़ाइलों में प्रीकंपिल्ड हेडर
- 4. शीर्षलेख फ़ाइलों में परिवर्तनीय परिभाषा
- 5. सी हेडर फ़ाइलों (.h) और C++ शीर्षलेख फ़ाइलों (.hpp)
- 6. जावास्क्रिप्ट फ़ाइलों के लिए उपयुक्त सामग्री-प्रकार शीर्षलेख क्या है?
- 7. स्रोत फ़ाइलों के शीर्षलेख में "$ आईडी: ..." पंक्ति का उद्देश्य
- 8. शीर्षलेख फ़ाइलों में अज्ञात नेमस्पेस के लिए उपयोग करता है
- 9. शीर्षलेख और स्रोत फ़ाइलों के बीच "कक्षा प्रकार पुनर्वितरण" त्रुटि
- 10. XDocument.Save() शीर्षलेख के बिना
- 11. UITableView शीर्षलेख के शीर्षलेख में UIButton जोड़ना
- 12. मानक शीर्षलेख फ़ाइलों सहित। string.h या cstring? अथवा दोनों?
- 13. शीर्षलेख फ़ाइलों में स्थिर वैश्विक कार्यों की घोषणा
- 14. शीर्षलेख फ़ाइलों को खोजने में असमर्थ - एंड्रॉइड एनडीके
- 15. शीर्षलेख
- 16. शीर्षलेख फ़ाइलें नहीं मिली
- 17. "कच्चे HTTP शीर्षलेख" क्या है? "HTTP शीर्षलेख" और "कच्चे HTTP शीर्षलेख" के बीच क्या अंतर है?
- 18. प्रति स्रोत फ़ाइल शीर्षलेख
- 19. गिथब पेज, HTTP शीर्षलेख
- 20. प्रेषक शीर्षलेख
- 21. अनुरोध शीर्षलेख
- 22. अनुभाग शीर्षलेख
- 23. HTTP शीर्षलेख
- 24. UICollectionView शीर्षलेख
- 25. अनुभाग शीर्षलेख
- 26. विशिष्ट शीर्षलेख
- 27. wkhtmltopdf शीर्षलेख
- 28. कस्टम शीर्षलेख
- 29. distutils सही स्थान पर numpy शीर्षलेख फ़ाइलों को देखने के लिए
- 30. सी में स्रोत और शीर्षलेख फ़ाइलों के बीच कोई मौलिक अंतर?
जावा? क्या मैं कुछ भुल गया? – CromTheDestroyer
[mu] (http://en.wikipedia.org/wiki/Mu_%28negative%29) ... लेकिन हेडर फाइलें मुझे आलसी होने की अनुमति देती हैं और सभी घोषणाएं नहीं लिखती हैं (और प्रकार और enums और परिभाषित करता है और मैक्रोज़) सभी "सादा" सी स्रोत फाइलें – pmg
जावा कक्षाएं (कम से कम मेरे स्कूल में) आमतौर पर एक फ़ाइल में परिभाषित की जाती हैं। सी, सी ++, और उद्देश्य सी कक्षाओं को आमतौर पर दो फाइलों में परिभाषित किया जाता है। – jeffythedragonslayer