परियोजना निर्देशिका व्यवस्थित करने के लिए या अधिक कम इस तरह है लोकप्रिय तरीका में से एक:सी ++ परियोजना स्रोत कोड लेआउट
MyLib +--mylib_class_a.h mylib_class_a.cpp mylib_library_private_helpers.h mylib_library_private_helpers.cpp MyApp +--other_class.h other_class.cpp app.cpp
app.cpp
: एक ही पुस्तकालय के लिए
#include "other_class.h"
#include <mylib_class_a.h> // using library MyLib
सभी .h
और .cpp
फ़ाइलें हैं एक ही निर्देशिका में। नाम टकराव से बचने के लिए, फ़ाइल नाम अक्सर कंपनी के नाम और/या लाइब्रेरी नाम के साथ उपसर्ग होते हैं। MyLib MyApp के हेडर सर्च पथ, आदि में होगा। मैं फाइलनामों को उपसर्ग करने का प्रशंसक नहीं हूं, लेकिन मुझे #include
को देखने का विचार पसंद है और पता है कि वह हेडर फ़ाइल कहां से संबंधित है। मुझे फ़ाइलों को व्यवस्थित करने के इस दृष्टिकोण से नफरत नहीं है, लेकिन मुझे लगता है कि एक बेहतर तरीका होना चाहिए।
जब से मैं एक नई परियोजना शुरू कर, मैं कुछ निर्देशिका संगठन विचारों की प्रार्थना करना चाहते।
ProjA +--include +--ProjA +--mylib +--class_a.h +--app +--other_class.h +--src +--mylib +--class_a.cpp library_private_helpers.h library_private_helpers.cpp +--app +--other_class.cpp app.cpp util.h
app.cpp
:
#include "util.h" // private util.h file
#include <ProjA/app/other_class.h> // public header file
#include <ProjA/mylib/class_a.h> // using class_a.h of mylib
#include <other3rdptylib/class_a.h> // class_a.h of other3rdptylib, no name collision
#include <class_a.h> // not ProjA/mylib/class_a.h
#include <ProjA/mylib/library_private_helpers.h> // error can't find .h
.cpp
फ़ाइलों और निजी (केवल तत्काल पुस्तकालय देखने योग्य) .h
फ़ाइलों src निर्देशिका के अंतर्गत जमा हो जाती है (src कभी कभी lib कहा जाता है) वर्तमान में मैं इस निर्देशिका संरचना की तरह। सार्वजनिक हेडर फ़ाइलों को एक परियोजना/lib निर्देशिका संरचना में व्यवस्थित किया जाता है और <ProjectName/LibraryName/headerName.h>
के माध्यम से शामिल किया जाता है। फ़ाइल नाम किसी भी चीज़ के साथ prefixed नहीं हैं। अगर मुझे कभी भी अन्य टीमों द्वारा उपयोग किए जाने के लिए माईलिब को पैकेज करने की आवश्यकता होती है, तो मैं उपयुक्त बाइनरी फ़ाइलों और संपूर्ण शामिल/प्रोजा निर्देशिका की प्रतिलिपि बनाने के लिए बस अपना मेकफ़ाइल बदल सकता हूं।
एक बार फ़ाइलें स्रोत नियंत्रण में जाँच कर रहे हैं और लोगों को उन पर काम शुरू यह निर्देशिका संरचना को बदलने के लिए मुश्किल हो जाएगा। इसे पाने के लिए सही है।
अनुभव इस तरह स्रोत कोड के आयोजन के साथ कोई भी? आपको इसके बारे में कुछ पसंद नहीं है? यदि आपके पास ऐसा करने का बेहतर तरीका है, तो मैं इसके बारे में बहुत कुछ सुनना चाहूंगा।
मैं मानता हूं कि यह शुरुआत में अधिक हो जाएगा। मेरी चिंता यह है कि जब परियोजना चल रही है, और एक सभ्य आकार में वृद्धि, कोई भी सभी फाइलों को पुनर्गठित करने और सभी शामिल पथों को बदलने के लिए समय बिताना नहीं चाहता। –
अच्छा, यह सच हो सकता है। लेकिन, आप सब कुछ क्रम में रखने के लिए उत्सुक लगते हैं, तो आप इसे कर सकते हैं! मैं एक कंपनी में काम करता हूं जिसमें लगभग 60 डेवलपर्स टीमों में विभाजित होते हैं। कुछ हफ्ते पहले कई टीमों ने अपनी फाइलों को पुनर्गठित करने में कुछ दिन बिताए थे। व्यवस्थित चीजों को रखना एक चल रही प्रक्रिया है .. एक अच्छा प्रोग्रामर रिफैक्टर कोड को हाथ से बाहर होने पर कोड करता है, उदाहरण के लिए जब एक कोड फ़ाइल बहुत बड़ी हो जाती है तो इसे प्रबंधित करने में मुश्किल हो जाती है, उन्हें इसे विभाजित करना चाहिए। यह फाइलों के फ़ोल्डर के साथ ही वही है। –
इन टीमों ने कभी 3 साल पहले भविष्यवाणी नहीं की थी कि उन्हें अब किस संरचना की आवश्यकता होगी। अगर वे अनुमान लगाने की कोशिश करेंगे, तो मुझे लगता है कि वे वैसे भी पुनर्गठित करने की आवश्यकता समाप्त हो गए होंगे। तो, मुझे इसके बारे में चिंता नहीं करनी चाहिए। यदि आप किसी प्रोजेक्ट की शुरुआत में एक अच्छी प्रैक्टिस विकसित करने की कोशिश कर रहे हैं, तो आप कोड का यूनिट-टेस्ट कैसे करें और भाग के रूप में चलाने के लिए परीक्षण कैसे प्राप्त करें, इसे व्यवस्थित करने के एक अच्छे तरीके से अपना समय बिताने के बेहतर हैं। एक स्वचालित निर्माण का ... क्योंकि यूनिट-परीक्षण निश्चित रूप से ऐसा कुछ है जो आपके द्वारा चलने के बाद पेश करना कठिन होता है। –