निम्नलिखित बहुत विशिष्ट उदाहरण है ...
third-party library
release
obj
debug
obj
include
src
sublib 1
sublib 2
mylibrary
release
obj
debug
obj
include
src
sublib 1
sublib 2
myapp
release
obj
debug
obj
subapp 1
subapp 2
mylittleapp
release
obj
debug
obj
असल में, उप के लिए उप-बड़ी परियोजनाओं के लिए आम है, लेकिन ज्यादातर एक विशेष परियोजना src के लिए फ़ोल्डर होते हैं, शामिल हैं आदि प्रत्येक निर्माण विन्यास के लिए एक फ़ोल्डर है आम, और ओबीजे फाइलों और अन्य मध्यवर्ती को एक सबफ़ोल्डर में रखते हुए यह एक अच्छा विचार है। यह ओब्जे फ़ोल्डर्स में सबप्रोजेक्ट फ़ोल्डरों को डालने के लिए मोहक हो सकता है, लेकिन आम तौर पर यह अनावश्यक है - ओबीजे फ़ोल्डरों को अच्छी तरह व्यवस्थित करने की आवश्यकता नहीं है, इसलिए केवल चिंता ही एक फ़ाइल नाम है, और इसके लिए सबसे अच्छा फिक्स अद्वितीय स्रोत फ़ाइल नाम होना है प्रत्येक परियोजना के भीतर (कम से कम)।
फ़ोल्डरों में "शामिल" होना चाहिए आईएमओ में केवल शीर्षलेख होना चाहिए जो अन्य परियोजनाओं द्वारा शामिल किया जाएगा - आंतरिक शीर्षलेख "src" फ़ोल्डर में हैं।
यूआई सामान को एक अलग फ़ोल्डर में रखना एक बुरा विचार नहीं है, अगर यह काफी बड़ा है। मैंने यूआई सामान को एक अलग स्थैतिक-जुड़े शीर्ष-स्तरीय प्रोजेक्ट के रूप में देखा है, और मेरा मतलब ऐप-विशिष्ट है, नहीं (उदा।) Wxwidgets। आमतौर पर, हालांकि, विभाजन का स्तर उप-प्रोजेक्ट है यदि यह बिल्कुल अलग है। आप सबप्रोजेक्ट्स को विभाजित करते हैं, सामान्य रूप से एप्लिकेशन-विशिष्ट ब्लॉकों की बात अधिक होती है, इसलिए यह इस बात पर निर्भर करता है कि यूआई सामान को एक अलग ब्लॉक के रूप में या कार्य-विशिष्ट तर्क के साथ मिश्रित अलग-अलग हिस्सों के रूप में सबसे अच्छा संभाला जाता है या नहीं।
नामस्थान सबसे अधिक उपयोग की जाने वाली भाषा सुविधा नहीं हैं, संभवतः क्योंकि बहुत से लोग "उपयोग" का उपयोग करते हैं, इसलिए वे बहुत अंतर नहीं करते हैं। मुख्य लाइब्रेरी प्रोजेक्ट के लिए एक नामस्थान समझ में आता है, लेकिन सबफ़ोल्डर को नामस्थान 1: 1 में जोड़ना कुछ ऐसा नहीं है जिसे मैंने देखा है। मेरे पास व्यक्तिगत रूप से एक नामस्थान होता है जिसमें मेरे अधिकांश लाइब्रेरी कोड शामिल होते हैं, जिनमें कुछ सामान्य रूप से उपयोग की जाने वाली चीज़ों के लिए कुछ उप-नामस्थान होते हैं, लेकिन कुछ स्थानों में बहुत कुछ उपयोग किया जाता है (उदा। "बिटवाई" नामस्थान)। उप-नामस्थान एकल स्रोत/हेडर जोड़े तक ही सीमित हैं, इसलिए उपफोल्डर की आवश्यकता नहीं है। लाइब्रेरी-विशिष्ट चयन का अधिकांश दायां शीर्षक सहित किया जाता है - सिवाय इसके कि मैं आमतौर पर मुख्य-प्रोजेक्ट शीर्ष-स्तरीय शीर्षलेख के माध्यम से बहुत कुछ शामिल करता हूं।
असल में, नेमस्पेस नामकरण विवादों से परहेज करने का एक तरीका है। वे अनिवार्य रूप से abstractions या कार्यात्मक ब्लॉक या कुछ भी के साथ संबद्ध नहीं है। किसी विशेष प्रोजेक्ट के भीतर, आप यह सुनिश्चित कर सकते हैं कि नाम संघर्ष न करें। "Std" नेमस्पेस के साथ, एक नामस्थान में लॉट डालना ठीक है।
जैसा कि आप कहते हैं, हालांकि, यह एक निश्चित उत्तर नहीं है - निश्चित रूप से मामूली विविधताएं और काफी अलग दृष्टिकोण हैं।
आप किस प्रकार के पर्यावरण का उपयोग कर रहे हैं? – ihtkwot
प्रोग्राम आउटपुट कहां रखना है, यह एक अलग मामला है और संभवतः एक अलग प्रश्न के रूप में बेहतर पूछा जाता है। –
@gf अच्छा बिंदु। इसे संपादित किया। – Stephano