2008-12-31 14 views
5

organising my Python project और फिर calling from a parent file in Python पूछने के बाद यह मेरे लिए हो रहा है कि मेरे सभी कोड को एक फ़ाइल में रखना इतना आसान होगा (डेटा बाहरी रूप से पढ़ा जाएगा)।एक कोड में सभी कोड

मैंने हमेशा सोचा है कि यह खराब प्रोजेक्ट संगठन था, लेकिन मुझे लगता है कि समस्याओं का सामना करने का सबसे आसान तरीका यह है कि मुझे सामना करना पड़ेगा। क्या मुझे बस छड़ी का गलत अंत फ़ाइल गिनती के साथ मिला है या मैंने बड़ी (मेरे लिए) परियोजनाओं पर कुछ महान मार्गदर्शिका नहीं देखी है?

+0

क्या आप एकमात्र व्यक्ति हैं जो किसी भी समय कोड पर काम करेंगे? –

+0

हां, इसलिए यह मेरे साथ क्यों हो रहा है कि यह एक व्यावहारिक विचार हो सकता है। यदि 1 और व्यक्ति भी था तो मैं इस विकल्प पर विचार नहीं करता। – Teifion

उत्तर

12

यदि आप किसी भी प्रकार के एससीएम का उपयोग करने की योजना बना रहे हैं तो आप खराब हो जाएंगे। एक फ़ाइल होने के कारण कई टकराव और विलय होने का एक गारंटीकृत तरीका है जो समय के साथ निपटने के लिए दर्दनाक होगा।

सम्मेलनों के लिए चिपकें और अपनी फ़ाइलों को अलग करें। यदि उस व्यक्ति को बचाने के लिए कुछ और नहीं है जो एक दिन आपके कोड को बनाए रखना होगा ...

+1

+1 - मैं एससीएम बिंदु के साथ सहमत हूं। यह एक व्यापार बंद या यहां एक दीर्घकालिक निवेश है। सॉफ्टवेयर परियोजनाएं एक प्रोग्रामर की विरासत नहीं हैं। अब एक शॉर्टकट लें और आपको बाद में भुगतान करना होगा। तो बेहतर निर्णय लें और अब कुछ दर्द करें। वैसे भी अपने कोड संगठन कौशल में जोड़ने के लिए। –

+1

उम, किसी भी सभ्य एससीएम को एक ही फाइल में बदलावों के साथ आसानी से निपटने में सक्षम होना चाहिए, खासकर जब केवल एक व्यक्ति है जो इसे संपादित करने जा रहा है। अस्तित्व में सबसे पुराना भी मुझे पता है - आरसीएस - एक फ़ाइल के साथ अच्छी तरह से काम करता है। – ShreevatsaR

+0

"केवल एक व्यक्ति है जो इसे संपादित करने जा रहा है" क्या यह मामला भी आगे बढ़ेगा? क्या यह एक बड़ी धारणा बनाने के लिए नहीं है? जब तक कि यह कॉलेज प्रोजेक्ट न हो जो सबमिट होने पर समाप्त हो जाए। –

4

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

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

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

+0

मैं अंत में आ रहा हूं एक परियोजना जो कोड की 11k लाइनों में वजन करती है और केवल इतना आसान था क्योंकि मैंने इसे शुरू करने के लिए वास्तव में अच्छी तरह व्यवस्थित किया था।वह PHP में था, मुझे लगा कि मुझे यह भी करना चाहिए ताकि इसे आसान बनाने में मदद मिल सके :) – Teifion

+0

उभरा, जो जेनेटू लिनक्स पैकेज मैनेजर का मुख्य कार्यक्रम है, एक ही फाइल है जिसमें पाइथन कोड की ~ 7000 लाइनें हैं। –

2

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

+0

अच्छा सारांश वाक्यांश! वे अभ्यास जो त्वरित पहले कटौती करने में आसान बनाते हैं, अक्सर वे नहीं होते हैं जो दीर्घकालिक रखरखाव और पुन: प्रयोज्यता का समर्थन करते हैं। –

2

यदि यह व्यवस्थित करने का सबसे अच्छा तरीका है, तो आप शायद कुछ गलत कर रहे हैं।

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

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

2

चूंकि Calling from a parent file in Python गंभीर डिजाइन समस्याओं को इंगित करता है, तो मैं कहूंगा कि आपके पास दो विकल्प हैं।

  1. लाइब्रेरी मॉड्यूल मुख्य पर वापस कॉल करने का प्रयास नहीं करता है। इसे ठीक करने के लिए आपको चीजों को फिर से लिखना होगा।

    [मुख्य कार्यक्रम को कॉल करने वाला एक आयातित घटक एक अनुचित निर्भरता है। और पायथन इसका समर्थन नहीं करता है क्योंकि यह एक खराब डिजाइन है।]

  2. इसे एक फ़ाइल में तब तक रखें जब तक आप उचित एक-तरफा निर्भरताओं के साथ बेहतर डिज़ाइन न समझें। फिर निर्भरता समस्याओं को ठीक करने के लिए आपको इसे फिर से लिखना होगा।

एक मॉड्यूल (एक फ़ाइल) संबंधित कोड का तार्किक टुकड़ा होना चाहिए। सब कुछ नहीं। एक वर्ग परिभाषा नहीं है। मॉड्यूलरिटी का एक मध्यम मैदान है।

इसके अतिरिक्त, उपयोगिता पुस्तकालयों और क्या नहीं (जो घटकों या मुख्य कार्यक्रम के बारे में नहीं जानते हैं) के मुख्य कार्यक्रम से घटकों (जो मुख्य कार्यक्रम पर निर्भर नहीं हैं) से उचित एक-तरफा निर्भरता ग्राफ होना चाहिए ।

परिपत्र (या आपसी) अक्सर एक डिजाइन समस्या का संकेत निर्भरता। कॉलबैक समस्या से बाहर एक ही रास्ता है। एक और तरीका है एक उचित एक तरह से ग्राफ पाने के लिए परिपत्र तत्वों विघटित करने के लिए है।

2

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

एक बार अपने सभी कोड एक फ़ाइल में है, मैं निम्नलिखित पर पुनरावृत्ति सलाह देते हैं:

  1. अन्योन्याश्रित वर्गों के एक छोटे समूह को पहचानें।

  2. उन वर्गों को एक अलग फ़ाइल में खींचें।

  3. नई अलग फ़ाइल के लिए इकाई परीक्षण जोड़ें।

  4. संपूर्ण परियोजना को रेट करें।

अपनी परियोजना के आकार पर निर्भर करता है, यह भी कई पुनरावृत्तियों नहीं ले आप कुछ उचित तक पहुँचने के लिए करना चाहिए।