सबसे नीचे, कुछ अपडेट हैं कि यह मेरे लिए साल के हर तिमाही में कितना अच्छा है, मुझे लगता है कि वे मूल्यवान हैं।
अच्छा नामकरण। या, अगर यह किसी और का कोड है, तो उस प्रणाली के वर्गों / कार्यों पर बुरे नामों के आधार पर अच्छे नामों / जिम्मेदारियों को विशेषता देने की कोशिश करता है, तो यह मेरे दिमाग में समझ में आता है। एक बार ऐसा करने के बाद, निम्न-स्तरीय कार्यान्वयन याद रखने में आसान हो जाते हैं।
मेरे पास यही है। इस साइट पर बहुत सारे शुद्धतावादी हैं जो ईश्वर की कसम खाएंगे-जानते हैं कि जो भी प्रकार के पैटर्न या ऑब्जेक्ट हैं, लेकिन अच्छा नामकरण आपको बहुत दूर मिलेगा। मैंने कम से कम प्रलेखित / अच्छी तरह से नामांकित / अच्छी तरह से डिकोड किए गए कोड बनाकर खुद से अधिक काम किया है और यह मुझे काटने के लिए कभी नहीं आया, भले ही मेरे कोड का उपयोग बहुत सारे लोगों द्वारा किया गया हो, लेकिन एक चीज जो मैंने सही की, वह थी अच्छा नामकरण, अच्छी टिप्पणियाँ और योजनाबद्ध तरीके पर बहुत समय बर्बाद करना, जिसने मेरे कोड के प्रवाह को समझाया। यदि आप मेरे कोड पर गहन तरीके से विस्तार करना चाहते हैं तो निम्न-स्तरीय कार्यान्वयन को समझना आवश्यक है। अच्छी तरह से लिखित कोड को उचित तरीकों से विस्तारित किया जा सकता है, इसलिए, यह ठीक है कि कोई व्यक्ति या आप निम्न-स्तर के कार्यान्वयन को नहीं समझते / याद करते हैं।
यदि आप थोड़ा विवाद में रुचि रखते हैं कि मेरे मूल क्षेत्र के लोगों के साथ-साथ मुझे भी सच्चाई पता है, लेकिन, अगर आप यहां लिखे गए बातों को सुनते हैं, तो आप इस उत्तर से सहमत होंगे और सहमत होंगे , आगे पढ़ें:
लेकिन यहाँ एक और मुद्दा है - शुद्धतावादियों का। आप अच्छी तरह से शब्दों के जवाब और विचारधाराएं सुनेंगे, जो उचित और पूरी तरह से तार्किक हैं, वास्तव में, उनके साथ कुछ भी गलत नहीं है। लेकिन आपको उनका पालन करने की आवश्यकता नहीं है, वास्तव में, वे आपके नुकसान में खेल सकते हैं।
मेरे दोस्तों ने बड़े सिस्टम के साथ काम किया और वे सिर्फ उन लोगों को हँसाते हैं जो कॉन्वेंट और पैटर्न के बारे में बहुत अधिक ध्यान रखते हैं और अच्छे कारण के लिए करते हैं। मैं यह भी करूँगा - मैं अपने डेटा विश्लेषण के मुख्य क्षेत्र से इसके लिए अपना तर्क पा सकता हूं, चूंकि मैं ऐसा अनुभवी डेवलपर नहीं हूं: आप जिन चीजों को सोचते हैं, उनमें से अधिकांश मायने नहीं रखती हैं और इस अर्थ में आपके अहंकार का मजबूत संबंध है।अक्सर एक व्यक्ति, अपने अहंकार के कारण, ज्ञान प्राप्त कर लेता है कि वह अपने पक्षपाती होने के कारण सबसे अधिक गलतफहमी है जो अब एक प्राधिकरण द्वारा पुन: संक्रमित हो जाता है कि वह सोचता है कि "मैंने वही किया था"। यह एक बहुत प्रसिद्ध जाल है जिसे आपको कभी नहीं गिरना चाहिए। इसका मतलब यह नहीं है कि वह इसे सही तरीके से या अधिक से अधिक अच्छे के लिए उपयोग नहीं कर रहा है, लेकिन कई बार, ये लोग क्या करेंगे यह वादा है कि जो कुछ भी वे कह रहे हैं वह स्वर्ण पुरस्कार है।
तो आप क्या कर सकते हैं?
एक सहकर्मी को अपना कोड समझाएं और उनसे पूछें कि क्या यह उच्च स्तर के दृष्टिकोण से समझ में आता है।
यही बात मायने रखती है। बेशक, जो किसी और के कोड को पढ़ रहा है, उसके पास कुछ चीजों के कार्यान्वयन को देखने के लिए हमेशा एक ऑल-टैब फेस्टिवल होगा, लेकिन इससे कोई फर्क नहीं पड़ता, अगर आपके कोड को पढ़ने वाले को आपके सिस्टम की उच्च-स्तरीय समझ है और समझता है कि "चीजें क्यों होती हैं" "(फिर, आवश्यक रूप से जानने के बिना, पूरी तरह से" वे कैसे होते हैं "), फिर आप सुनहरे हैं।
यह मैं नहीं कह रहा हूं कि आगे बढ़ो और बकवास कोड लिखो जो कि प्रदर्शन करने वाला नहीं है या कुछ भी सम्मान नहीं करता है, लेकिन मैं जो कह रहा हूं वह है:
1) भूलना ठीक है। समय के साथ, आप अपने साथ काम कर रहे कोड को पढ़ने में बेहतर हो जाएंगे। यदि आप जिस कोड को पढ़ रहे हैं, वह मांग करता है कि आप निम्न स्तर के कार्यान्वयन को अच्छे स्तर पर जानते हैं, तो यह कोड बुरी तरह से लिखा गया है और यह उस भूमिका में है जो मैंने पहले कहा था: क्या कोई सहकर्मी आपको समझता है?
2) दुनिया बहुत बुद्धिमान लोगों से भरी हुई है जो बहुत स्मार्ट नहीं हैं। वे भी अक्सर बहुत भावुक होते हैं और उन्हें बाहरी ताकतों से पूर्वाग्रह-प्रबल होने का खतरा होता है। वे जो करते हैं, उसमें बहुत अच्छे हैं, लेकिन वे जो भी करते हैं, जानकारी फैलाने के अभिनेता के रूप में भूल जाते हैं: विचार / जानकारी, भले ही "तर्क" द्वारा समर्थित हो, उन्हें भेजने वाले का संदर्भ है, जो यह समझने में महत्वपूर्ण है कि क्या है या नहीं जानकारी आपके लिए भी उपयोगी है। आपके लिए क्या मायने रखता है दूसरों के लिए समझ में आता है और वे इसे प्यार करेंगे, लेकिन जानकारी को पूर्ण रूप में नहीं लिया जाना चाहिए और एक, फिर से, पर विचार करना चाहिए, या कम से कम उस संदर्भ का पता लगाने की कोशिश करें जहां यह आया था और उसके खिलाफ जांच करें यह देखने के लिए कि क्या यह मेल खाता है। यह वास्तव में हमें "ज्ञान प्राप्त करने के लिए बिट्स" देने वाले अरबपतियों के समान ही है।
संक्षेप में: कोड लिखें जो समझ में आता है और यह महसूस करता है कि यह अभी भी बहस योग्य है जहां हमें कई पैटर्न / कक्षाएं और रिफाइनरी की आवश्यकता है जैसा कि कुछ कहते हैं। तर्क के दोनों किनारों पर बहुत स्मार्ट लोग हैं और यह केवल आपकी टीम के लिए जो भी काम करता है उसे उचित तरीके से करने के विचार को सुदृढ़ करना चाहिए - छोटे विवरणों पर अटक न जाएं जो मायने नहीं रखते हैं, आप उन्हें समझेंगे बाद में, याद रखें, आप एक बेहद प्रतिस्पर्धी दुनिया में रहते हैं जहाँ समय सबसे महत्वपूर्ण चीज है:
स्टार्टअप्स की सफलता में समय।
अपने समय और संसाधनों को एक सार्थक, लालची तरीके से आवंटित करें।
यहां संपादित करें, 6 महीने बाद:
यह एक पागल यात्रा रही है। मैंने कभी नहीं सोचा था कि सिर्फ जुदाई / अच्छा नामकरण और प्रलेखन मूल रूप से आपको अपने कोडबेस के अंदर और बाहर कुछ भी प्लग करने की अनुमति दे सकता है। मुझे नए बदलावों को गति देने के लिए इसे लाने के लिए बहुत सारे कोड को फिर से लिखना पड़ा और मैंने 2-3 दिनों में इसका अच्छा हिस्सा बना लिया। मैं सुरक्षित रूप से कह सकता हूं कि मैंने ज्ञान की कमी के कारण हर जगह SOLID का पालन नहीं किया, न ही सर्वोत्तम अभ्यास और मैं बता सकता हूं कि वे मेरे तकनीकी ऋण में हैं, लेकिन बहुत कुछ नहीं। अलग, नाम अच्छी तरह से और दस्तावेज़, यह आपको कुछ ही समय में कोड बदलने की अनुमति देगा जब आपको अंततः पता चलता है कि आप कितने विनम्र थे।
मुझे गलत न समझें: यदि आप अपने कोड को कसकर लिखते हैं, तो आप बहुत दर्द में होंगे, चाहे आप SOLID से नफरत करें या न करें, यहां तक कि इसे समझने और आधार स्तर पर लागू करने से महान डिकूप्लिंग की अनुमति मिलती है, जो ईमानदारी से है, OOP के साथ वास्तव में मदद करता है कि केवल एक चीज। OOP कोड री-यूज़ के बारे में भी होना चाहिए था और जबकि यह यहाँ और वहाँ होता है, आप वास्तव में आपके द्वारा बनाई गई बहुत सारी वस्तुओं का फिर से उपयोग करने के लिए नहीं मिलते हैं, इसलिए, यह सुनिश्चित करने पर ध्यान दें कि आपका सिस्टम अच्छी तरह से अलग है। एक बार जब आप परिपक्वता तक पहुंच जाते हैं और मान लेते हैं कि अंकल बॉब आते हैं और आपकी परियोजना का नेतृत्व करते हैं, तो वह कहेंगे "ठीक है, यह नरक के रूप में गूंगा है लेकिन कम से कम सब कुछ अलग है, अच्छी तरह से नामित और प्रलेखित है, इसलिए कम से कम मुझे पता है कि यह सब क्या है " (मुझे उम्मीद है)। मेरे लिए, यह काम करता है। मेरा LOC लगातार बदलता रहता है, लेकिन लेखन के समय, यह 110k लाइनों की कोड, 110k लाइनों के प्रदर्शन कोड की है कि एक व्यक्ति के लिए सद्भाव में काम करता है एक बहुत कुछ है।
यहाँ एक संपादित, 3 महीने बाद, 8 महीने के कोड पर मैं रीफैक्टरिंग कर रहा हूँ:
इस सब का एक अर्थ है। मैं अब वही ले सकता हूं जो मैंने फिर से लिखा था, नए विचारों के साथ, अवधारणा को और नए सिरे से कोड को फिर से शुरू करना, क्योंकि मैं पूरी तरह से समझता हूं कि क्या चल रहा है और यह योजनाबद्ध / अच्छे नामकरण और टिप्पणियों के कारण क्यों काम करता है। मैंने कुछ समय पहले कुछ कोड लिखा था कि मैंने अच्छी तरह से नामकरण के बारे में परवाह नहीं की है और इस तरह से गुजरना दर्द है। अब मैं सोच रहा हूँ कि मेरे कोड को समझाने का अगला चरण क्या हो सकता है।