निम्नलिखित चीजों के लिए `उपयोग` की तुलना में शब्दार्थ अधिक उपयुक्त पैकेज नाम है?


18

जैसा कि एक स्ट्रोमैन पैकेज पर विचार करता है java.utilयह विभिन्न वर्गों के लिए एक डंपिंग ग्राउंड है कि ज्यादातर मामलों में उस व्यक्ति के अलावा किसी भी अन्य व्यक्ति में कुछ भी साझा नहीं करते हैं, जो उन्हें वहां डाल देता है और अपनी कक्षा के लिए अधिक शब्दार्थ सही पैकेज के नाम के साथ आने के लिए उदासीन था।

एक उदाहरण के रूप में, उस कक्षा को लें UUIDजो उस वर्ग के लिए शब्दार्थ पैकेज का सही नाम होता है?

मैं अपनी UUIDकक्षा को और अधिक हल्के होने के लिए लागू करने पर काम कर रहा हूं । मैं me.myproject.util.UUIDअपने पैकेज के नाम का उपयोग नहीं करना चाहता ।

मैंने विचार किया me.myproject.rfc4122.UUIDलेकिन इसके उपयोग के शब्दार्थ का अर्थ नहीं है UUID

मैंने भी विचार किया था, me.myproject.uuid.UUIDलेकिन मुझे उस विषय में पसंद नहीं है, भले ही वह पायथन में एक लोकप्रिय दृष्टिकोण है, जिसमें एक ही नाम के साथ एक मॉड्यूल में एक वर्ग रखा गया है, और packagesजावा modulesमें पायथन में शब्दार्थ के बराबर नहीं हैं ।

मैंने भी विचार किया me.myproject.UUIDलेकिन इसे अस्वीकार कर दिया क्योंकि मैं उन चीजों के नाम के उस हिस्से को प्रदूषित नहीं करना चाहता जो संबंधित नहीं हैं। यह समस्या को एक स्तर तक ले जाता है।

मैंने भी विचार किया me.myproject.lib.UUIDलेकिन इसका कोई अर्थ नहीं है .utilऔर सिर्फ समस्या का नाम बदल देता है।

semantics: भाषाविज्ञान की शाखा और अर्थ से संबंधित तर्क ।


कैसे के बारे में me.myproject.UUID? याme.UUID
रॉबर्ट हार्वे

मेरे लिए, कुछ from me.myproject.uuid import UUID, GetUUIDInfoठीक लगता है। एक मॉड्यूल में एक से अधिक निर्यातित चीजें हो सकती हैं।
9000

2
JXTA में आईडी के साथ करने के लिए एक 'आईडी' पैकेज है।
greg-449

@ greg-449 - मैं आपके उत्तर की ओर झुक रहा हूं identityया identifiersअपने सुझाव को थोड़ा और स्पष्टीकरण के साथ रखूंगा क्योंकि यह संभवतः स्वीकार हो जाएगा।

जवाबों:


11

प्रत्येक वर्ग को एक पैकेज में रखने की कोशिश के साथ समस्या जिसमें उस वर्ग के लिए शब्द का सही नाम है, यह उन पैकेजों का नेतृत्व करता है जिनमें बहुत कम वर्ग होते हैं, या कभी-कभी केवल एक वर्ग भी होता है। यह बदले में संकुल की एक भीड़ की ओर जाता है।

पैकेज नामकरण के लिए एक अधिक व्यावहारिक दृष्टिकोण बस आपको सामान खोजने में मदद करना है। बार-बार इस्तेमाल किए जाने वाले सामान जिन्हें आप हमेशा जानते हैं, जहां सभी को एक जगह पर रखा हुआ पाया जाता है, उन्हें रास्ते से बाहर रखता है और इसलिए अधिक उपयोग की जाने वाली सामग्री को ढूंढना आसान बनाता है। तो, आपको वास्तव में पैकेज नामों की आवश्यकता नहीं है जो कि उनमें से हर एक वर्ग के लिए शब्दार्थ रूप से सही हैं, आपको सिर्फ पैकेज नामों की आवश्यकता है जो शब्दार्थिक रूप से गलत नहीं हैं। जाहिर है, 'लाइन' पैकेज नाम सोच की इस लाइन के अनुसार चुना गया था: यह उन वर्गों के लिए शब्द का सही नाम नहीं है , लेकिन यह भी शब्दार्थिक रूप से गलत नहीं है, और यह काफी अच्छा है।

इसलिए, यदि आपका यह UUID प्रकार केवल इस विशिष्ट एप्लिकेशन द्वारा उपयोग किया जाना नियत है, (जैसा कि इस तथ्य से स्पष्ट है कि आप इसे 'myproject' के तहत डालने की योजना बना रहे हैं), तो यह संभवतः आपके 'मॉडल' का हिस्सा है परियोजना। आपके पास पहले से ही एक 'मॉडल' पैकेज होना चाहिए, जिसमें उन सभी वर्गों के सेट शामिल हों जो आपकी लगातार संस्थाओं से मेल खाते हों, जिनमें से कई के बीच संभवतः संबंध हैं, यूयूआईडी के साथ संभवतः इन संबंधों को लागू करने का साधन है। इसके अलावा, आपके UUIDs शायद जानते हैं कि कैसे खुद को बनाए रखना है, है ना? और यह भी, आपके यूयूआईडी को केवल आपके मॉडल संस्थाओं के सदस्यों के रूप में पाया जा सकता है, है ना? तो, आपका मॉडल पैकेज शायद इसके लिए सबसे अच्छी जगह है।

अन्यथा, यदि आपका यह यूयूआईडी प्रकार अन्य परियोजनाओं में भी उपयोग किया जा सकता है, तो इसे कुछ ढांचे के हिस्से के रूप में देखा जाना चाहिए। तो, यह उस ढांचे के मूल स्रोत फ़ोल्डर में रह सकता है, या कुछ 'प्रकार' उप-पैकेज में, जैसा कि मेनमा ने सुझाव दिया है, या उस ढांचे के कुछ उप-पैकेज में भी जिसे 'उपयोग' या 'मिस' कहा जाता है। कुछ गलत नहीं है उसके साथ।


2
कृपया उन उत्तरों में टिप्पणी को सीमित करने का प्रयास करें जो वास्तव में उत्तर की उपयोगिता से नहीं जुड़ते हैं। टिप्पणी अनुभाग ऐसे अस्वीकरण के लिए आरक्षित है। धन्यवाद।
maple_shaft

1

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

इसके अलावा, मुझे लगता है कि "उपयोग" पैकेज का नाम पूरी तरह से व्यर्थ नहीं है - यह सिर्फ एक विशिष्ट मापदंड द्वारा वर्गों को समूह करता है - मेरे लिए "उपयोग" वर्ग का अर्थ है कि यह एप्लिकेशन के डोमेन का हिस्सा नहीं है, लेकिन यह भी एक हिस्सा नहीं है ढांचा (यह आवेदन की संरचना को प्रभावित नहीं करता है)। यह मूल रूप से (गैर) मानक पुस्तकालय का एक विस्तार है।

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


1
यह मेरा दृष्टिकोण है। यह एक पैकेज बनाने के लिए समझ में नहीं आता है जिसका स्पष्ट उद्देश्य नहीं है। यदि एक वर्ग को आसानी से एक सार्थक पैकेज नहीं दिया जा सकता है तो 'उपयोग' ठीक है और शायद पसंद भी किया जा सकता है। आमतौर पर जो कुछ भी आप के साथ होता है वह यह है कि पर्याप्त कक्षाएं उपयोग में समाप्त होती हैं जो संबंधित हैं और वे उपयोग से बाहर रिफैक्ट करने में आसान हैं (कम से कम विकास के दौरान) सार्थक पैकेज में। यदि आपने प्रत्येक वर्ग के लिए अद्वितीय पैकेज बनाने की कोशिश की है जो आपको नहीं पता है कि वह कहाँ जाता है तो आप आसानी से उन रिश्तों को याद कर सकते हैं और एक क्लीनर आर्किटेक्चर में रिफैक्ट करने का अवसर प्राप्त कर सकते हैं।
डंक

@ डंक, यह वास्तव में एक बहुत अच्छा बिंदु है - पूर्व-परिपक्व रूप से कुछ कलात्मक पैकेज संरचना बनाने से आप रास्ते में बेहतर, अधिक प्राकृतिक संगठन देख पाएंगे।
qbd

1

अंकल बॉब ने पैकेज अलगाव पर कुछ दिशानिर्देश दिए हैं

पहले तीन पैकेज सिद्धांत पैकेज सामंजस्य के बारे में हैं, वे हमें बताते हैं कि पैकेज के अंदर क्या रखा जाए:

  1. पुन: उपयोग का दाना रिलीज का दाना है
  2. एक साथ बदलने वाली कक्षाएं एक साथ पैक की जाती हैं
  3. एक साथ उपयोग की जाने वाली कक्षाएं एक साथ पैक की जाती हैं

तो, आपके प्रश्न का उत्तर देते हुए, कौन / क्या यूयूआईडी वर्ग का उपयोग करने जा रहा है , क्या यह एक विशेषता के रूप में है या इसमें ऑपरेशन का आह्वान किया है? आपकी निर्भरता का ग्राफ कैसा है? UUID का उपयोग अन्य वर्गों के साथ एक साथ किया जाएगा ?

आपके उत्तर के आधार पर, शायद आप इसे me.myproject.identity पैकेज, me.myproject.serialization पैकेज, me.myproject कह सकते हैं। डीटीओ या कुछ और भी पूरी तरह से। हो सकता है, यूयूआईडी वर्ग को आपके मॉडल के साथ रखा जाए और आप इसे एक पैकेज में रखेंगे जो आपके पास पहले से ही है, जैसे me.myproject.models


1
dtoके रूप में के बारे में के रूप में बेकार है libया utils, पूरी dtoअवधारणा 90 के दशक के मध्य से एक भोली विरोधी पैटर्न है, modelएक ही बेकार सामान्यीकरण श्रेणी में भी आता है

हम आपको अधिक उपयोगी नाम देने के लिए आपकी परियोजना के बारे में पर्याप्त नहीं जानते हैं
एचबीएस

-2

सबसे पहले, UUID (अपरकेस के साथ) पैकेज नाम या वर्ग नाम के लिए मेरे लिए एक बहुत बुरा विचार की तरह लगता है, सभी शैलियों से एक तरह से लागू किया गया है या अन्य सभी अपरकेस नाम "स्थिरांक" के साथ जुड़े हुए हैं। पैकेज का उद्देश्य सामान को व्यवस्थित करना है, पैकेज का नाम रखने का सबसे आसान तरीका उन वर्गों के मूल्य से है जो इसे रखता है:

  • उदाहरण के लिए com.example.identifier, आप वर्गों को उनके bussines मान द्वारा अलग करना चुन सकते हैं ;
  • या उनके तकनीकी मूल्य से, उदाहरण के लिए com.example.uuid

आईटी को सरल रखें


2
जावा एच.टी.एम.एल. टैगों वर्गों के उदाहरण हैं: java.util.UUID, java.net.URL, java.util.zip.CRC32, आदि
scriptin

@ सिस्क्रिप्टिन एक डेवलपर के लिए आसान नहीं होगा यदि वह कैप स्टाइल से "स्थिर", एक पैकेज नाम से सदस्य और इतने पर एक वर्ग शैली से अंतर कर सकता है? आपको क्यों लगता है कि CRC32, UUID एक वर्ग का एक अच्छा नाम है, सिर्फ इसलिए कि जावा ने ऐसा किया था? या क्योंकि यह "यूनिवर्सिटीली यूनिक आइडेंटिफायर" या "चक्रीय अतिरेक जांच" से एक परिचित है ... लेकिन थोड़ा इंतजार करें! इस java.util.zip.GZIPOutputStreamवर्ग के साथ क्या है ? GZIPके लिए खड़ा है ... ? there is also a java.util.zip.ZipOutputStream`
Tiberiu सी।

1
कक्षाएं प्रकार हैं, स्थिरांक मान हैं, कोई भ्रम नहीं है। मुझे नहीं लगता कि वे नाम अच्छे या बुरे हैं, मैं सिर्फ यह इंगित कर रहा हूं कि (कोडिंग) शैलियों के बारे में आप बात करते हैं कि लोअरकेस अक्षर रखने के लिए कक्षाएं लागू नहीं करते हैं। पाइथन UUIDमें अपरकेस भी है।
स्क्रिप्ट

यदि आप हर दिन / मंटेन कोड देखते हैं, तो इसका स्टाइल "पढ़ने में आसान" और "पीछे जाना और आगे बढ़ना" के बीच का अंतर बनाता है, यहाँ सिर्फ कैप स्टाइल को अलग करना, मुझे लगता है कि इसके माध्यम से व्यक्त करने के लिए अधिक मूल्यवान है कैप्स, इस प्रकार के सदस्य (वर्ग, स्थिर, पैकेज, आदि) से एक तथ्य है कि एक संक्षिप्त है।
तिबेरू सी।

1
मूल प्रश्न का पैकेज नाम लिखते समय उपयोग करने वाले पत्र के मामले से कोई लेना-देना नहीं था। शब्दार्थ यूयूआईडी यूयूआईडी, यूयूआईडी, यूआईआईडी, यूयूआईडी, या जो भी अन्य मनमाने ढंग से पूंजीकरण योजना आपको लगता है कि "सर्वश्रेष्ठ" है, से अलग नहीं है।
ब्रैंडिन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.