मेरा मानना है कि जीसी कार्यान्वयनकर्ताओं के डिजाइन से, आप nulification के साथ GC को गति नहीं दे सकते । मुझे यकीन है कि वे पसंद करते हैं आप कैसे / जब जीसी चलाता है के साथ खुद को चिंता नहीं कर रहा हूँ - इस तरह हर जगह का इलाज यह होने के नाते की रक्षा करने और अधिक देख रहे हैं और आप के लिए बाहर ... (धनुष सिर नीचे, मुट्ठी आकाश को जन्म देती है) .. ।
निजी तौर पर, मैं अक्सर स्पष्ट रूप से चर सेट करता हूं जब मैं उनके साथ स्व-प्रलेखन के रूप में काम करता हूं। मैं घोषणा नहीं करता, उपयोग करते हैं, तो बाद में शून्य करने के लिए सेट करें - मैं तुरंत शून्य कर देता हूं क्योंकि उन्हें अब आवश्यकता नहीं है। मैं स्पष्ट रूप से कह रहा हूं, "मैं आधिकारिक तौर पर आपके साथ कर रहा हूं ... चले गए ..."
क्या एक GC'd भाषा में अशक्त करना आवश्यक है? जीसी के लिए यह मददगार है? शायद हां, शायद नहीं, कुछ के लिए नहीं जानता, डिजाइन से मैं वास्तव में इसे नियंत्रित नहीं कर सकता, और इस संस्करण के साथ आज के जवाब की परवाह किए बिना या, भविष्य के जीसी कार्यान्वयन मेरे नियंत्रण से परे जवाब बदल सकते हैं। साथ ही अगर / जब nulling अनुकूलित किया गया है, तो यह एक फैंसी टिप्पणी की तुलना में थोड़ा अधिक है यदि आप करेंगे।
मुझे लगता है कि अगर यह मेरे इरादे को अगले गरीब मूर्ख को स्पष्ट कर देता है जो मेरे नक्शेकदम पर चलता है, और अगर यह " जीसी " को कभी-कभी " मदद " कर सकता है , तो यह मेरे लिए इसके लायक है। अधिकतर यह मुझे चुस्त और स्पष्ट महसूस कराता है और मोंगो को चुस्त और स्पष्ट महसूस करना पसंद है। :)
मैं इसे इस तरह से देखता हूं: प्रोग्रामिंग भाषाएं मौजूद हैं जो लोगों को दूसरे लोगों को इरादे का एहसास दिलाती हैं और एक कंपाइलर नौकरी के लिए क्या करना चाहिए - कंपाइलर एक सीपीयू के लिए उस अनुरोध को एक अलग भाषा (कभी-कभी कई) में परिवर्तित करता है - CPU (s) आपको एक हूट दे सकता है कि आप किस भाषा का प्रयोग करते हैं, आपकी टैब सेटिंग, टिप्पणियां, शैलीगत आकृतियाँ, चर नाम इत्यादि - एक CPU की बिट स्ट्रीम के बारे में जो यह बताती है कि रजिस्टर और opcodes और मेमोरी लोकेशन को ट्वीड करने के लिए क्या है। कोड में लिखी गई कई चीजें सीपीयू द्वारा हमारे द्वारा निर्दिष्ट अनुक्रम में खपत नहीं होती हैं। हमारे सी, सी ++, सी #, लिस्प, बेबेल, असेंबलर या जो कुछ भी वास्तविकता के बजाय सिद्धांत है, काम के बयान के रूप में लिखा गया है। जो आप देख रहे हैं वह आपको नहीं मिलता, हां, यहां तक कि असेंबलर भाषा में भी।
मैं "अनावश्यक चीजों" (जैसे रिक्त रेखाएं) की मानसिकता को समझता हूं "कुछ भी नहीं बल्कि शोर और अव्यवस्था है।" मेरे करियर में यह पहले था; मैं पूरी तरह से मिलता है। इस मोड़ पर मैं उस ओर झुक गया जो कोड को स्पष्ट करता है। ऐसा नहीं है कि मैं अपने कार्यक्रमों में "शोर" की 50 लाइनें भी जोड़ रहा हूं - यह यहां या वहां कुछ लाइनें हैं।
किसी भी नियम के अपवाद हैं। वाष्पशील स्मृति, स्थिर स्मृति, दौड़ की स्थिति, एकल, "बासी" डेटा के उपयोग और सभी प्रकार के सड़ांध के साथ परिदृश्यों में, यह अलग है: आप अपनी खुद की स्मृति, लॉकिंग और नलिका को एप्रोपोस के रूप में प्रबंधित करने की आवश्यकता है क्योंकि स्मृति का हिस्सा नहीं है GC'd यूनिवर्स - उम्मीद है कि हर कोई समझता है। GC'd भाषाओं के साथ बाकी समय यह आवश्यकता या गारंटी प्रदर्शन को बढ़ावा देने के बजाय स्टाइल की बात है।
दिन के अंत में सुनिश्चित करें कि आप समझते हैं कि जीसी के लिए क्या योग्य है और क्या नहीं; ताला, निपटान और उचित रूप से शून्य करना; वैक्स ऑन वैक्स ऑफ़; सांस अंदर सांस बाहर; और बाकी सब कुछ के लिए मैं कहता हूं: अगर यह अच्छा लगता है, तो करो। आपका माइलेज भिन्न हो सकता है ... जैसा कि यह होना चाहिए ...