मैं वास्तव में बड़े प्रोजेक्ट नहीं लिखता। मैं एक विशाल डेटाबेस को बनाए नहीं रख रहा हूं या कोड की लाखों लाइनों से निपट रहा हूं।
मेरा कोड मुख्य रूप से "स्क्रिप्टिंग" प्रकार का सामान है - गणितीय कार्यों का परीक्षण करने के लिए चीजें, या कुछ का अनुकरण करने के लिए - "वैज्ञानिक प्रोग्रामिंग"। इस बिंदु पर मैंने जिन सबसे लंबे कार्यक्रमों पर काम किया है, वे कोड की एक सौ लाइनें हैं, और जिन कार्यक्रमों पर मैं काम करता हूं उनमें से अधिकांश लगभग 150 हैं।
मेरा कोड भी बकवास है। मुझे इस बात का अहसास उस दिन हुआ जब मैं कुछ समय पहले लिखी गई एक फाइल को खोजने की कोशिश कर रहा था, लेकिन मैंने शायद ओवरवॉट कर दिया और मैं संस्करण नियंत्रण का उपयोग नहीं करता, जो कि शायद आप मेरी मूर्खता पर व्यंग्य में बड़ी संख्या में आघात कर रहे हैं।
मेरे कोड की शैली जटिल है और कुछ करने के लिए वैकल्पिक तरीकों पर ध्यान देने वाली अप्रचलित टिप्पणियों से भरी हुई है या कोड कॉपी की गई लाइनों के साथ है। जबकि चर नाम हमेशा बहुत अच्छे और वर्णनात्मक होते हैं, जैसे कि मैं चीजों को जोड़ता या बदलता हूं, उदाहरण के लिए, कोई नई चीज़ जो कोई व्यक्ति परीक्षण करना चाहता है, कोड शीर्ष पर ओवरलेट हो जाता है और ओवरराइट हो जाता है और क्योंकि मुझे लगता है कि इस चीज़ का परीक्षण अब जल्दी से हो जाना चाहिए कि मैं एक ढांचा है जिसे मैंने गंदे चर नामों का उपयोग करना शुरू किया है और फ़ाइल पॉट में जाती है।
जिस प्रोजेक्ट पर मैं अभी काम कर रहा हूं, मैं उस चरण में हूं जहां यह सब मुझे बड़े पैमाने पर काटने के लिए वापस आ रहा है। लेकिन समस्या यह है (संस्करण नियंत्रण का उपयोग करने से अलग, और प्रत्येक नए पुनरावृत्ति के लिए एक नई फ़ाइल बनाना और कहीं न कहीं एक पाठ फ़ाइल में यह सब रिकॉर्ड करना, जो शायद स्थिति को नाटकीय रूप से मदद करेगा) मुझे वास्तव में नहीं पता कि सुधार के साथ कैसे आगे बढ़ना है मेरी वास्तविक कोडिंग शैली।
क्या इकाई परीक्षण कोड के छोटे टुकड़ों को लिखने के लिए आवश्यक है? OOP के बारे में कैसे? बड़े प्रोजेक्ट पर काम करने के विपरीत "वैज्ञानिक प्रोग्रामिंग" करते समय अच्छे, साफ कोड लिखने के लिए किस तरह के दृष्टिकोण अच्छे हैं?
मैं ये सवाल पूछता हूं क्योंकि अक्सर, प्रोग्रामिंग ही सुपर कॉम्प्लेक्स नहीं होती है। यह गणित या विज्ञान के बारे में अधिक है जिसे मैं प्रोग्रामिंग के साथ परीक्षण या शोध कर रहा हूं। जैसे, क्या एक वर्ग आवश्यक है जब दो चर और एक फ़ंक्शन शायद इसका ख्याल रख सकते हैं? (विचार करें कि ये भी आम तौर पर ऐसी परिस्थितियाँ होती हैं जहाँ कार्यक्रम की गति को तेज़ अंत में पसंद किया जाता है - जब आप किसी अनुकार के 25,000,000+ समय के चरण को चला रहे हों, तो आप चाहते हैं कि यह हो।)
शायद यह बहुत व्यापक है, और यदि ऐसा है, तो मैं माफी मांगता हूं, लेकिन प्रोग्रामिंग पुस्तकों को देखते हुए, उन्हें अक्सर बड़ी परियोजनाओं पर संबोधित किया जाता है। मेरे कोड को OOP की आवश्यकता नहीं है , और यह पहले से ही बहुत छोटा है, इसलिए यह "ओह" की तरह नहीं है, लेकिन अगर हम ऐसा करते हैं तो फ़ाइल एक हजार लाइनों से कम हो जाएगी! मैं जानना चाहता हूं कि "छोटे से शुरू" कैसे करें और इन छोटे, तेज परियोजनाओं पर सफाई से कार्यक्रम करें।
मुझे अधिक विशिष्ट विवरण प्रदान करने में खुशी होगी, लेकिन अधिक सामान्य सलाह, अधिक उपयोगी, मुझे लगता है। मैं पायथन 3 में प्रोग्रामिंग कर रहा हूं।
किसी ने नकल का सुझाव दिया। मुझे स्पष्ट कर दूं कि मैं मानक प्रोग्रामिंग मानकों को बिल्कुल अनदेखा करने की बात नहीं कर रहा हूं। स्पष्ट रूप से, उन मानकों के मौजूद होने का एक कारण है। लेकिन दूसरी ओर, क्या यह वास्तव में कोड लिखने के लिए समझ में आता है जो OOP कहलाता है जब कुछ मानक सामान हो सकता है, लिखने के लिए बहुत तेज़ होता, और इसकी कमी के कारण पठनीयता का समान स्तर होता कार्यक्रम?
कुछ अपवाद हैं। इसके अलावा, वहाँ सिर्फ सादे मानकों से परे वैज्ञानिक प्रोग्रामिंग के लिए शायद मानक हैं। मैं उन लोगों के बारे में भी पूछ रहा हूं। यह इस बारे में नहीं है कि अगर वैज्ञानिक कोड लिखते समय सामान्य कोडिंग मानकों की अनदेखी की जानी चाहिए, तो यह स्वच्छ वैज्ञानिक कोड लिखने के बारे में है!
अपडेट करें
बस मैंने सोचा कि मैं एक "नहीं-एक-सप्ताह-बाद में" अपडेट को जोड़ूंगा। आपकी सभी सलाह बेहद मददगार थीं। अब मैं एक ग्राफिकल इंटरफ़ेस के लिए git kraken के साथ संस्करण नियंत्रण - git का उपयोग कर रहा हूं। इसका उपयोग करना बहुत आसान है, और मेरी फाइलों को काफी हद तक साफ कर दिया है - आसपास चिपकी पुरानी फ़ाइलों की कोई आवश्यकता नहीं है, या कोड के पुराने संस्करणों ने "बस मामले में" टिप्पणी की।
मैंने भी पाइलिंट लगाया और अपने सभी कोड पर इसे चलाया। एक फ़ाइल को शुरू में नकारात्मक अंक मिला; मुझे भी यकीन नहीं है कि यह कैसे संभव था। मेरी मुख्य फ़ाइल ~ 1.83 / 10 के स्कोर पर शुरू हुई और अब ~ 9.1 / 10 पर है। सभी कोड अब मानकों के अनुरूप हैं। मैं अपनी आँखों के साथ चर नामों को अद्यतन करने के लिए भी दौड़ा, जो चले गए थे ... उह ... जाग, और खंड के खंड की तलाश में।
विशेष रूप से, मैंने अपने मुख्य कार्यों में से एक को फिर से शुरू करने पर इस साइट पर हाल ही में एक प्रश्न पूछा था, और यह अब बहुत क्लीनर और बहुत छोटा है: एक लंबे, फूला हुआ, अगर / और भरे हुए फ़ंक्शन के बजाय, यह अब आधे से कम है आकार और बहुत आसान यह पता लगाने के लिए कि क्या चल रहा है।
मेरा अगला चरण "इकाई परीक्षण" को लागू कर रहा है। जिससे मेरा मतलब है कि मैं अपनी मुख्य फाइल पर चल सकता हूं, जो इसमें दिए गए सभी कार्यों को मुखरता से बयान करता है और कोशिश करता है / एक्सेप्ट करता है, जो शायद इसे करने का सबसे अच्छा तरीका नहीं है, और बहुत सारे डुप्लिकेट कोड के परिणामस्वरूप होता है, लेकिन मैं पढ़ता रहूंगा और यह पता लगाने की कोशिश करूंगा कि इसे बेहतर कैसे किया जाए।
मैंने उस दस्तावेज़ को भी काफी अद्यतन किया है जो मैंने पहले ही लिखा था, और एक एक्सेल स्प्रेडशीट, प्रलेखन, और जीथब रिपॉजिटरी से जुड़े कागज की तरह पूरक फाइलें जोड़ीं। यह थोड़े वास्तविक प्रोग्रामिंग प्रोजेक्ट की तरह दिखता है।
तो ... मुझे लगता है कि यह सब कहना है: धन्यवाद ।