मुझे लगता है कि यह आपके विशेष एप्लिकेशन पर बहुत निर्भर करता है। एक केंद्रीकृत ऐप में, मुझे लगता है कि Core
और Common
फ़ोल्डर्स के बीच थोड़ा ओवरलैप हो सकता है। लेकिन सबसे महत्वपूर्ण बात यह है कि आपके ऐप के लिए यह समझ में आता है। ऐसा महसूस न करें कि आपको उन फ़ोल्डरों को सिर्फ इसलिए रखना होगा क्योंकि आपने इसे अन्य ऐप्स में देखा है ...
मेरे लिए Core
और Common
फ़ोल्डर्स कुछ परिदृश्यों में बहुत अधिक समझ में आता है - उदा। एक एपीआई और एक ग्राहक के साथ एक वेब ऐप। आपके पास API पक्ष में Core
फ़ोल्डर हो सकता है, जहां कोर निष्पादन (व्यवसाय तर्क) होता है, और उसके बाद Common
फ़ोल्डर होता है जिसमें आपको कुछ चीजों के साथ एपीआई और क्लाइंट पक्षों की आवश्यकता होती है - उदाहरण के लिए, एचटीपी अनुरोध सत्यापन या एक जेसन कनवर्टर।
वैसे भी, यह Core
और अन्य प्रकार के ऐप्स में Common
फ़ोल्डर होने का अर्थ हो सकता है।
उदाहरण के लिए, Core
फ़ोल्डर में उन वर्गों को शामिल किया जाएगा जो केंद्रीय आपके ऐप के लिए हैं - व्यवसाय मॉडल कक्षाओं का विशाल बहुमत वहां होगा।
Common
फ़ोल्डर में, दूसरे हाथ पर, आप कुछ अन्य वर्गों है कि साझा कर रहे हैं हो सकता है, लेकिन नहीं केंद्रीय - जैसे, एक Logger
या एक MessageSender
वहाँ हो सकता है ...
अपने छोटे मसौदा के रूप में कोड संरचना का, मुझे लगता है कि आपके Core
पैकेज को संशोधित करने वाला एक है - Lib1
Core
का उपयोग क्यों नहीं करता है? अगर कुछ कोर है, तो आमतौर पर ऐसा इसलिए होता है क्योंकि चलाने के लिए बाकी सबकुछ इसकी आवश्यकता होती है। यदि आपके पास कोड नहीं है जो संकल्पनात्मक रूप से केंद्रीय है, तो हो सकता है कि आप अपना Core
पैकेज हटा दें और केवल Common
रखें?
अपने अन्य प्रश्न के लिए के रूप में - मुझे नहीं लगता कि Common
सामान सब अन्य संकुल, लेकिन सिर्फ 2 या अधिक संकुल कुछ साझा साथ द्वारा साझा किया जाना चाहिए, कि आम माना जा सकता है।
अच्छा अभ्यास: ऐसी चीजें करें जो समझ में आती हैं, [कम से कम आश्चर्य के सिद्धांत] का उल्लंघन न करें (http://en.wikipedia.org/wiki/Principle_of_least_astonishment) वास्तव में एक अच्छे कारण के बिना। आप अंतर महसूस नहीं कर रहे हैं क्योंकि यह एक मनमाना निर्णय है। – Jon