codebase - दो या अधिक भाषाओं(जैसे जावा और सी++) मिश्रण करते समय स्रोत कोड आधार का आयोजन करना




polyglot (5)

इस मामले में, सवाल में फाइलें सिर्फ एक अलग भाषा नहीं हैं, बल्कि एक अलग प्रोग्राम के रूप में भी चलती हैं जो परिभाषित अंतरफलक के माध्यम से इंटरैक्ट करती हैं। इसका मतलब है कि स्रोत फ़ाइलों को एक अलग परियोजना के रूप में माना जा सकता है, और इसलिए कहीं और रखा जाता है।

यह मामला एनएटी परियोजनाओं में अलग है, जो एक कोडबेस के अंदर सी # और एएसपी.नेट (उदाहरण के लिए) मिश्रण करते हैं। लोग ऐसे मामलों में अपने कोड को कैसे व्यवस्थित करते हैं?

कुछ दिनों पहले जब मुझे जावा परियोजना में सी ++ फ़ाइलें शुरू करना पड़ा तो मुझे एक समस्या में भाग गया यह जावा प्रक्रिया के सीपीयू उपयोग को मापने की आवश्यकता के साथ शुरू हुआ और यह तय किया गया कि सीडी में लिखा देशी लाइब्रेरी (यूनिक्स मशीन पर साझा लाइब्रेरी) को कॉल करने के लिए जेएनआई का इस्तेमाल करना था। समस्या यह थी कि सीआर फाइलों को स्रोत रिपॉजिटरी (संयोग से साफ़ करिये) में रखने के लिए उपयुक्त जगह खोजने के लिए जिसमें केवल जावा फाइल शामिल है

मैंने कुछ विकल्पों के बारे में सोचा:

(ए) स्रोत फ़ाइलों के शीर्ष पर सी फ़ाइलों (विशेष रूप से, एक .h फ़ाइल और एक। सी फ़ाइल) डालने के लिए एक अलग निर्देशिका बनाएँ:

/ vobs / myproduct / javasrc / vobs / myproduct / cppsrc

मुझे यह पसंद नहीं था क्योंकि मेरे पास केवल दो सी फाइलें हैं और यह इस तरह की भाषा के स्तर पर स्रोत आधार को विभाजित करने के लिए बहुत अजीब लग रहा था। अगर परियोजना का पर्याप्त भाग सी ++ और जावा में अधिक या कम समान रूप से लिखा गया था, तो यह ठीक हो सकता है।

(बी) सी फ़ाइलों को जावा पैकेज में रखो जो इसका उपयोग करता है।

मेरे पास / vobs / myproduct / com / mycompany / myproduct / util / में क्लाउड जावा कक्षाएं हैं और सी फाइलें भी वहां जाती हैं।

मुझे यह पसंद नहीं था क्योंकि मुझे लगता है कि सी फ़ाइलें सिर्फ जावा पैकेज में नहीं हैं I

क्या किसी ने इस तरह एक समस्या का हल किया है? आम तौर पर, कोडबेज के आयोजन के लिए जब दो या दो से अधिक भाषाओं को मिलाया जाता है, तो उनका अनुसरण करने के लिए एक अच्छी रणनीति क्या है?

अद्यतन: मेरी परियोजना में कुछ सी या सी ++ का उपयोग करने की मेरी कोई योजना नहीं है, शायद कुछ ज्योथन, लेकिन आपको कभी भी यह नहीं पता कि मेरे ग्राहकों को एक सुविधा की आवश्यकता है जिसे सी का उपयोग करके हल किया जा सकता है या सबसे अच्छा सी का उपयोग करके हल किया जा सकता है।


उन्हें अलग-अलग फ़ोल्डर में रखते हुए एक अच्छा विचार है यह सी फ़ाइलों के लिए जावा संकुल खोज की तुलना में आसान बनाता है, और भविष्य में इसे आगे बढ़ने के बिना भी अधिक सी कोड जोड़ने की संभावना के लिए अनुमति देता है


व्यक्तिगत रूप से मैं दोनों को अलग करता हूं, संभवतः यहां तक ​​कि अपनी अलग परियोजनाओं में भी, लेकिन जब वे दोनों अलग-अलग चीजें हैं, तो उतना ही उतना ही आप एक ही कक्षा में दो अलग-अलग अवधारणाएं नहीं डाल पाएंगे। जब वे दोनों एक ही वैचारिक क्षेत्र को छूते हैं, तो यह अधिक आवेश प्राप्त हो जाता है। बिल्कुल, जब कोड तैयार करने की बात आती है तो हमेशा ऐसे मुद्दे होते हैं, जो इसे संरचना में लगा रहे हैं) संभवतः उदाहरण के लिए बिना सभी प्रकार की चालें करने के लिए संकलन करने के लिए? क्या आप इस प्रोजेक्ट में सी का उपयोग करने की योजना बना रहे हैं, यदि आप समान पैटर्न का पालन करते हैं तो सी फ़ाइलें आपके सभी प्रोजेक्ट में फैलेगी ...


व्यक्तिगत रूप से विभाजित भाषा समाधान के मामले में, मैं उन्हें अलग परियोजनाओं या फ़ोल्डर्स में रखता हूं।

इस समस्या को देखने का एक तरीका सी कक्षाएं जैसे किसी भी अन्य तृतीय पक्ष एपीआई का इलाज करना है। अपने जावा कोड में निर्भरता (यानी प्रत्यक्ष कॉल से बचें) को कड़े युग्म से बचने के लिए और जावा से अलग परियोजना / फ़ोल्डर में सी स्रोत रखें।


वेब एप्लिकेशन के लिए डिफ़ॉल्ट मैवेन-निर्मित लेआउट src/main/java , src/test/java , src/main/resources , और src/test/resources । मुझे लगता होगा कि यह src/main/cpp और src/test/cpp भी जोड़ने के लिए डिफ़ॉल्ट होगा। यह मेरे लिए एक सभ्य पर्याप्त सम्मेलन जैसा लगता है