मैं कुछ समय पहले इस बारे में सोचा था और यह हाल ही में पुनर्जीवित हुआ क्योंकि मेरी दुकान अपना पहला वास्तविक जावा वेब ऐप कर रही है।
एक परिचय के रूप में, मैं दो मुख्य पैकेज का नामकरण रणनीतियों को देखता हूं। (स्पष्ट होने के लिए, मैं संपूर्ण 'domain.company.project' भाग का उल्लेख नहीं कर रहा हूँ, मैं उस नीचे के पैकेज सम्मेलन के बारे में बात कर रहा हूँ।) वैसे भी, पैकेज नामकरण परंपराएँ जो मैं देख रहा हूँ वे इस प्रकार हैं:
कार्यात्मक: व्यवसाय के डोमेन के अनुसार अपनी पहचान के बजाय अपने फ़ंक्शन के अनुसार अपने पैकेज का नामकरण। इसके लिए एक और शब्द 'लेयर' के अनुसार नाम दिया जा सकता है। तो, आपके पास * .ui पैकेज और * .domain पैकेज और * .orm पैकेज होगा। आपके पैकेज ऊर्ध्वाधर के बजाय क्षैतिज स्लाइस हैं।
यह तार्किक नामकरण की तुलना में बहुत अधिक सामान्य है। वास्तव में, मुझे विश्वास नहीं होता कि मैंने कभी ऐसा प्रोजेक्ट देखा या सुना है जो ऐसा करता हो। यह निश्चित रूप से मुझे लेरी बनाता है (इस तरह की सोच कि आप एक एनपी समस्या के समाधान के साथ आए हैं) क्योंकि मैं बहुत चालाक नहीं हूं और मुझे लगता है कि हर किसी के पास ऐसा करने के लिए महान कारण होने चाहिए। दूसरी ओर, मैं लोगों के विरोध में नहीं हूँ कि कमरे में सिर्फ हाथी गायब है और मैंने इस तरह से पैकेज नामकरण करने के लिए एक वास्तविक तर्क नहीं सुना है । यह सिर्फ वास्तविक मानक है लगता है।
तार्किक: अपने पैकेजों को उनके व्यावसायिक डोमेन पहचान के अनुसार नाम देना और हर उस वर्ग को उस पैकेज में कार्यक्षमता के ऊर्ध्वाधर स्लाइस के साथ करना है।
मैंने ऐसा पहले कभी नहीं देखा या सुना नहीं है, जैसा कि मैंने पहले उल्लेख किया है, लेकिन यह मेरे लिए एक टन का अर्थ है।
मैं क्षैतिज रूप से नहीं बल्कि खड़ी प्रणालियों से संपर्क करता हूं। मैं ऑर्डर प्रोसेसिंग सिस्टम में जाना चाहता हूं, डेटा एक्सेस लेयर नहीं। जाहिर है, एक अच्छा मौका है कि मैं उस सिस्टम के विकास में डेटा एक्सेस लेयर को छूऊंगा, लेकिन बात यह है कि मैं इस तरह से नहीं सोचता। निश्चित रूप से इसका मतलब यह है कि जब मैं कोई परिवर्तन आदेश प्राप्त करता हूं या कुछ नई सुविधा लागू करना चाहता हूं, तो सभी संबंधित वर्गों को खोजने के लिए पैकेजों के एक समूह में मछली पकड़ने के लिए नहीं जाना अच्छा होगा। इसके बजाय, मैं सिर्फ एक्स पैकेज में दिखता हूं क्योंकि मैं जो कर रहा हूं उसका एक्स के साथ क्या करना है।
एक विकास के दृष्टिकोण से, मैं इसे आपके आर्किटेक्चर के बजाय आपके पैकेज को आपके व्यवसाय डोमेन के दस्तावेज़ के लिए एक बड़ी जीत के रूप में देखता हूं। मुझे लगता है कि डोमेन लगभग हमेशा सिस्टम का हिस्सा होता है जो कि कठिन होता है जहां सिस्टम की वास्तुकला, विशेष रूप से इस बिंदु पर, लगभग इसके कार्यान्वयन में सांसारिक होती है। तथ्य यह है कि मैं इस प्रकार के नामकरण सम्मेलन के साथ एक प्रणाली में आ सकता हूं और तुरंत संकुल के नामकरण से पता चलता है कि यह आदेश, ग्राहकों, उद्यमों, उत्पादों, आदि के साथ काम करता है, बहुत आसान काम लगता है।
ऐसा लगता है कि यह आपको जावा के एक्सेस संशोधक का अधिक बेहतर लाभ उठाने की अनुमति देगा। यह आपको सिस्टम की परतों के बजाय सबसिस्टम में बहुत अधिक स्पष्ट रूप से इंटरफेस को परिभाषित करने की अनुमति देता है। इसलिए यदि आपके पास एक ऑर्डर सबसिस्टम है जिसे आप पारदर्शी रूप से लगातार बनाए रखना चाहते हैं, तो आप सिद्धांत रूप में कभी भी कुछ और नहीं बता सकते हैं कि यह लगातार अपनी परत में वर्गों के लिए सार्वजनिक इंटरफेस बनाने के लिए लगातार नहीं है और इसके बजाय dol कक्षा की पैकेजिंग करें केवल उन वर्गों के साथ जो इसके साथ व्यवहार करता है। जाहिर है, अगर आप इस कार्यक्षमता को उजागर करना चाहते हैं , तो आप इसके लिए एक इंटरफ़ेस प्रदान कर सकते हैं या इसे सार्वजनिक कर सकते हैं। यह सिर्फ ऐसा लगता है कि आप अपने सिस्टम की सुविधाओं का एक ऊर्ध्वाधर टुकड़ा कई पैकेजों में विभाजित करके बहुत कुछ खो देते हैं।
मुझे लगता है कि मैं देख सकता हूं कि एक नुकसान यह है कि यह परतों को थोड़ा और कठिन बना देता है। एक पैकेज को केवल हटाने या नाम बदलने के बजाय और फिर एक वैकल्पिक प्रौद्योगिकी के साथ एक नया स्थान छोड़ने के लिए, आपको सभी पैकेजों में सभी वर्गों को बदलना होगा। हालाँकि, मुझे नहीं लगता कि यह एक बड़ी बात है। यह अनुभव की कमी से हो सकता है, लेकिन मुझे यह कल्पना करनी होगी कि जितनी बार आप अपने सिस्टम में जाते हैं और अपने सिस्टम के भीतर लंबवत फीचर स्लाइस को संपादित करते हैं, उसकी तुलना में आप कितनी बार टेक्नोलॉजी पैलेस स्वैप करते हैं।
इसलिए मुझे लगता है कि इस सवाल का जवाब आपके पास होगा, आप अपने पैकेज का नाम कैसे रखेंगे और क्यों? कृपया समझें कि मैं जरूरी नहीं समझता कि मैं स्वर्ण हंस या यहाँ कुछ पर ठोकर खाई हूँ। मैं ज्यादातर शैक्षणिक अनुभव के साथ इस सब के लिए बहुत नया हूं। हालाँकि, मैं अपने तर्क में छेद नहीं कर सकता इसलिए मुझे उम्मीद है कि आप सभी ऐसा कर सकते हैं ताकि मैं आगे बढ़ सकूँ।