2011-08-11 1 views
15

मैं जावा दुनिया से आ रहा हूं, जहां मेरी समझ में संकुल/फ़ोल्डरों के भीतर फाइलों/वर्गों को अच्छी तरह से संरचित किया जाना चाहिए।क्या एक्सकोड 4 में संगठन के लिए "सर्वोत्तम अभ्यास" है?

एक्सकोड 4 में सबसे अच्छा अभ्यास क्या है? मुझे अभी तक एक ऐप्पल दिशानिर्देश नहीं मिला। अगर कोई मुझे सही दस्तावेज़ पर धक्का दे, तो मैं खुश रहूंगा।

यदि कोई दस्तावेज़ नहीं है तो ऐसा करने के लिए सबसे अच्छा क्या है? मुझे एक प्रोजेक्ट फ़ोल्डर में सभी वर्गों के लिए यह थोड़ा अजीब लगता है - या तो एक्सकोड-व्यू या फ़ाइल संरचना के अंदर (अजीब रूप से फ़िल्टरस्ट्रक्चर एक्सकोड में दृश्य संरचना के बराबर नहीं लगता है)। बेशक यह परियोजना संस्करण-नियंत्रण (गिटहब पर) पर होगी।

अग्रिम में बहुत धन्यवाद!

+4

सही, एक्सकोड 4 में प्रोजेक्ट नेविगेटर वास्तविक फ़ाइल संरचना नहीं है। मुझे लगता है कि विचार आपके लिए फाइलों की व्यवस्था करना है, हालांकि आप प्रोजेक्ट नेविगेटर में चाहते हैं और एक्सकोड को वास्तविक फाइल सिस्टम के बारे में चिंता करने दें। जिस तरह से आप कोड में फ़ाइलों का संदर्भ लेते हैं, वे हमेशा फाइलनाम का उपयोग बिना किसी फाइल सिस्टम पथ के कर रहे हैं। मुझे लगता है कि कंपाइलर संकलन समय या कुछ पर संरचना flattens। सर्वोत्तम प्रथाओं के लिए ... मुझे यकीन नहीं है कि कोई ऐप्पल डेवलपर दिशानिर्देश हैं या नहीं। मैंने उन्हें कभी नहीं देखा है, अपनी परियोजना के लिए सबसे अच्छा क्या है। – mattacular

+0

विशेष रूप से इस विषय को संपादित करने के लिए मोश के लिए धन्यवाद, और आपके महान उत्तरों के लिए अन्य सभी को भी! बहुत, बहुत उपयोगी। ऐसा लगता है कि फाइलों के साथ काम करते समय एक्सकोड आईट्यून्स की तरह काम करता है: फाइल डिस्क पर कहीं भी हो सकती है, लेकिन आप उन्हें एक्सकोड में जिस तरह से चाहते हैं उसे व्यवस्थित कर सकते हैं। – brainray

+0

इसके अलावा, कोड मॉड्यूल या परियोजनाओं को पुन: सक्रिय करने से बचने के लिए सी # ifdef के साथ कोड को कूड़ेदान के प्रलोभन का प्रयास करें और विरोध करें। जितना अधिक जटिल आप कोड बनाते हैं, उतना अधिक संभावना है कि कोई इस पर यात्रा करेगा और कुछ और तोड़ देगा .. विशेष रूप से कई विकृतियों के साथ समय के दबाव में। –

उत्तर

9

सबसे पहले, मुझे समूह नियंत्रकों और संबंधित वर्गों की श्रेणियां मिलना पसंद है। लेकिन न केवल एक्सकोड में बनाए गए समूहों में, असली फ़ोल्डरों में भी। इसलिए, एक्सकोड में इसे बनाने के बजाय समूह बनाने के दौरान इसे पहले खोजक में बनाया गया, फिर उस फ़ोल्डर को एक्सकोड में खींचें और इसे एक समूह में बनाया गया हो। अब जब आप उस समूह में नई फाइलें जोड़ते हैं तो वे डिस्क पर उस फ़ोल्डर में भी जाएंगे।

कुछ अन्य यादृच्छिक विचार:

नामकरण: जब से तुम नामस्थान की जरूरत नहीं है, आप एक दो या तीन अक्षर का उपसर्ग के साथ अपनी कक्षाओं (एप्पल की सिफारिश की तीन) उपसर्ग चाहिए। ऐसा तब भी करें जब यह पहले अजीब लगता है।

संसाधन: डिफ़ॉल्ट परियोजनाएं दृश्य नियंत्रकों से xib फ़ाइलों को अलग करना पसंद करती हैं। किसी भी आकार के ऐप में, मैं एक स्थान पर समूहित दृश्य नियंत्रकों और xib फ़ाइलों को रखना पसंद करता हूं। आप इस तरह की छवियों को भी इस तरह से कर सकते हैं हालांकि आम तौर पर केवल कुछ ही जगहों पर समूह को आसान बनाने के लिए पर्याप्त कुछ आसान होता है।

आवेदन सामग्री: मैं उन बिट्स को आसान बनाने के लिए सूची के शीर्ष पर एक एप्लिकेशन समूह में सभी विविध अनुप्रयोग विशिष्ट फ़ाइलों (ऐप प्रतिनिधि, info.plist, pch फ़ाइल, main.m, आदि) को समूहित करना पसंद करता हूं। ढूँढ़ने के लिए।

+0

बहुत धन्यवाद केंडल, बहुत सराहना की। – brainray

+0

आप उल्लेख करते हैं कि आप पहले खोजक में एक समूह बनाते हैं, फिर एक्सकोड में। लेकिन फ़ाइलों को बाद में स्थानांतरित करने का सबसे अच्छा तरीका क्या है? एक्सकोड के फ़ायरबॉक्स में फाइंडर परिणामों में इसे "resave फ़ाइल" प्रश्न में करना। यदि मैं उस फ़ोल्डर में फिर से सहेजता हूं जिसे मैंने पहले ही खोजक में फ़ाइल रखी है, तो मुझे फ़ाइल को ओवरराइट करना होगा (क्योंकि यह पहले से मौजूद है)। यह काम करता है, लेकिन थोड़ा सा सुरुचिपूर्ण लगता है। क्या कोई बेहतर तरीका है? एक बार फिर धन्यवाद! – brainray

+0

मैं आमतौर पर इसे एक्सकोड से हटा देता हूं (केवल संदर्भ हटाएं), फ़ाइलों को फ़ाइंडर में ले जाएं, और फिर उन्हें वापस एक्सकोड में खींचें। यह थोड़ा तेज़ है और resave फ़ाइल प्रश्नों से बचाता है। –

2

एक्सकोड में आपके प्रोजेक्ट को व्यवस्थित करने के तरीके के बारे में कोई विशिष्ट कार्य नहीं होता है/नहीं होता है। मैं गलत हो सकता था, लेकिन मुझे विश्वास है कि आपके द्वारा बनाए गए किसी भी फ़ोल्डर और लेआउट पूरी तरह से संकलित समय पर पूरी तरह से हटा दिए जाते हैं।

उदाहरण के लिए, यदि आपके पास संसाधन/छवियों/पृष्ठभूमि/छवि.png में घनिष्ठ छवि है, तो आप अभी भी .png फ़ाइल नाम का संदर्भ लें, न कि फ़ोल्डर संरचना।

मुझे कहना होगा कि आप फिट होने पर भी अपनी परियोजना को व्यवस्थित कर सकते हैं। जावा से कुछ उधार लें और जो कुछ भी सबसे अच्छा काम करता है उसे बाहर रखो।

7

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

हालांकि फाइलों की संरचना के संबंध में ज्यादा आधिकारिक सम्मेलन नहीं है, कुछ चीजें हैं संगठनात्मक खुजली को खरोंच करने के लिए, मैं कर सकता हूं। मैं अपनी डिस्क पर अपनी प्रोजेक्ट निर्देशिका में कुछ सबफ़ोल्डर बना देता हूं। उनमें से कुछ हैं:

  • ऑडियो: ऑडियो फ़ाइलें भी अपने स्वयं के समूह मिल सकता है।

  • बाहरी पुस्तकालय: अगर मैं अन्य लोगों के कोड का आयात कर रहा हूँ, मैं एक समूह "पुस्तकालयों" कहा जाता है और उसके बाद हर एक के लिए एक उपसमूह बना देंगे।

  • छवियां: वहां, यदि आप चाहें तो सबफ़ोल्डर/उपसमूह बना सकते हैं। (माउस के लिए एक, मुख्य मेनू के लिए एक, आदि)

  • प्रबंधित वस्तुओं: जब मैं अपनी परियोजनाओं में कोर डेटा का उपयोग, मैं अक्सर Xcode के मॉडलिंग उपकरण के माध्यम से उपवर्गों जेनरेट करना होगा। मैं उन्हें एक अलग समूह और एक अलग फ़ोल्डर में रखना पसंद करता हूं।

  • देखें नियंत्रकों: परियोजना के आधार पर, मैं समूह मेरे विचार नियंत्रक अलग ढंग से हो सकता है। उदाहरण के लिए, मैं अपने सभी "संपादकों" और "दर्शक" को अलग-अलग समूहों में रख सकता हूं।

आखिरकार, समूह आपके प्रोजेक्ट प्रबंधन को आसान बनाने के लिए हैं और फ़ोल्डर फ़ाइल प्रबंधन को आसान बनाने के लिए हैं। यह पूरी तरह से आप पर निर्भर करता है कि यह कैसे करें। जैसा बिल बिलकी बताता है, संकलन समय पर, कोई भी संगठन वास्तव में कोई फर्क नहीं पड़ता।(यदि आप पागल होना चाहते हैं, तो एक्सकोड 4 में "बिल्ड फेज" स्क्रीन पर नज़र डालें। कॉपी चरण आपकी सभी प्रासंगिक फाइलों का एक झटका है।)

1

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

वैसे भी अंतिम बंडल में सबकुछ बाहर हो जाता है, और आपके संगठन का फ़ाइल सिस्टम पर कोई प्रभाव नहीं पड़ता है। प्रोजेक्ट के लिए जो भी आवश्यक है उसका उपयोग करें- एक टेट्रिस क्लोन के लिए उसी संरचना का उपयोग न करें जैसा कि आप ... पेशेवर चिकित्सा ऐप या कुछ के लिए करेंगे।

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^