मैं कभी भी ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग का प्रस्तावक नहीं रहा हूं, और अगर कुछ भी मैंने कम किया है तो मैं सामान्य रूप से प्रोग्रामिंग के बारे में अधिक सीखता हूं। जैसा कि मैंने विभिन्न प्रोग्रामिंग प्रतिमानों का अध्ययन किया है, मैंने महसूस किया है कि अपरिवर्तनशीलता प्रोग्राम डिजाइन की केंद्रीय अवधारणाओं में से एक है , जो किसी भी दर्शन के अनुसार लिखे गए सॉफ़्टवेयर को प्रभावित करती है । यह कार्यात्मक प्रोग्रामिंग में बेहद महत्वपूर्ण है, सरल सुरक्षा गारंटी के शीर्ष पर अनुकूलन और संगामिति में निहितार्थ के साथ।
मूल रूप से, वह सब कुछ जो अपरिवर्तनीय हो सकता है, शायद तब तक होना चाहिए, जब तक कि आपको उत्परिवर्तनीय स्थिति का एक अच्छा कारण न मिल जाए। मेरे अनुभव में, इस लक्ष्य की तलाश में किसी भी भाषा में कार्यक्रम लिखने से सुरक्षित, बेहतर कोड होता है। आपके पास खोने के लिए कुछ भी नहीं है const
जहां लागू करने से - अपरिवर्तनीयता मुफ़्त है!
(संयोग से, मैंने C ++ की एक बोली के लिए GCC का एक कांटा बनाने के विचार के साथ खिलवाड़ किया है जिसमें सभी प्रकार के const
स्पष्ट रूप से योग्य नहीं हैं mutable
। यदि ऐसी किसी चीज़ के लिए समर्थन है, तो मैं इसे बनाए रखने और उपयोग करने के लिए पूरी तरह से प्रतिबद्ध हूं।)
एक OO दृष्टिकोण से, अप्रतिबंधित अप्रतिबंधित लेखन पहुँच को रोककर encapsulation को लागू करता है। यह कक्षाओं के बीच युग्मन को कम करता है क्योंकि अपरिवर्तनीय वस्तुओं को पूरी तरह से अपने राज्य का प्रबंधन करना चाहिए और इस तरह सामान्य मूल्यों की तरह व्यवहार करना चाहिए। कांस्ट की शुद्धता कार्यक्रम की शुद्धता को साबित करने की प्रक्रिया को काफी आसान बनाती है, विशेष रूप से समवर्ती प्रोग्रामिंग के संदर्भ में। C ++ संदर्भ और C ++ 0x rvalue संदर्भ शब्दार्थ के साथ, आप सभी जगह नकल करने के ओवरहेड के बारे में चिंता किए बिना अपरिवर्तनीय वस्तुओं का उपयोग कर सकते हैं। इसके अलावा, यदि आप ज्यादातर अपरिवर्तनीय वस्तुओं के साथ काम कर रहे हैं तो कंपाइलर कुछ अद्भुत अद्भुत अनुकूलन जादू काम कर सकते हैं।
मुझे पता है कि यह const
हर जगह टाइप करने के लिए बेकार है, लेकिन आप तेजी से इसकी आदत डाल लेते हैं, और विश्वसनीयता और रखरखाव के संदर्भ में समय के साथ लाभ स्पष्ट हो जाते हैं। मैं एक शानदार लेखक नहीं हूं, और इसके लिए एक मामला बनाना एक मुश्किल काम साबित होता है, लेकिन मुझे पता है कि कार्यक्रमों को डिजाइन और कार्यान्वित करते समय एक डेवलपर के रूप में मेरे लिए कांस्टेबल शुद्धता बहुत मददगार रही है, और मुझे लगता है कि अनुभव है इस संबंध में सबसे अच्छा शिक्षक।