मेरे द्वारा पढ़े जाने वाले एकमात्र देव ब्लॉग में, जोएल-ऑन-सॉफ्टवेयर-फाउंडर-ऑफ-एसओ आदमी द्वारा, मैंने बहुत समय पहले पढ़ा था कि ओओ उत्पादकता में वृद्धि नहीं करता है। स्वचालित मेमोरी प्रबंधन करता है। ठंडा। डेटा से कौन इनकार कर सकता है?
मैं अभी भी मानता हूं कि OO गैर-OO के लिए है जो फ़ंक्शन के साथ प्रोग्रामिंग सब कुछ इनलाइन प्रोग्रामिंग करना है।
(और मुझे पता होना चाहिए, जैसा कि मैंने GWBasic के साथ शुरू किया था।) जब आप फ़ंक्शन का उपयोग करने के लिए कोड को रिफ्लेक्टर करते हैं, तो आप जिस विधि में हैं, या वह
variable2654
बन जाती
variable3
है, या इससे भी बेहतर, यह एक ऐसा नाम है जिसे आप समझ सकते हैं,
और यदि फ़ंक्शन छोटा है। , यह कहा जाता है
value
और यह पूर्ण समझ के लिए पर्याप्त है।
जब कोई फ़ंक्शन के साथ कोड विधियों के साथ कोड नहीं बन जाता है, तो आपको मील के कोड को हटाना होगा।
जब आप कोड refactor होने के लिए सही मायने में OO, b
, c
, q
, और Z
बन this
, this
, this
और this
। और जब से मैं this
कीवर्ड का उपयोग करने में विश्वास नहीं करता , आपको कोड ऑफ मील को हटाना होगा। वास्तव में, आप ऐसा करते हैं, भले ही आप उपयोग करें this
।
मुझे नहीं लगता कि OO प्राकृतिक रूपक है।
मुझे नहीं लगता कि भाषा एक प्राकृतिक रूपक है या नहीं, और न ही मुझे लगता है कि फाउलर की "गंध" यह कहने से बेहतर है कि "यह कोड खराब है।" उस ने कहा, मुझे लगता है कि OO प्राकृतिक रूपकों और उन लोगों के बारे में नहीं है, जो सोचते हैं कि
वस्तुएं सिर्फ आप पर पॉप आउट करती हैं, मूल रूप से बिंदु को याद नहीं
कर रही हैं।
आप ऑब्जेक्ट ब्रह्माण्ड को परिभाषित करते हैं, और बेहतर ऑब्जेक्ट ब्रह्माण्ड का परिणाम उस कोड में होता है जो छोटा होता है, समझने में आसान होता है, बेहतर काम करता है, या ये सभी (और कुछ मापदंड जो मैं भूल रहा हूँ)। मुझे लगता है कि प्रोग्रामिंग ऑब्जेक्ट्स के रूप में ग्राहकों / डोमेन की प्राकृतिक वस्तुओं का उपयोग करने वाले लोग ब्रह्मांड को फिर से परिभाषित करने की शक्ति को याद कर रहे हैं।
उदाहरण के लिए, जब आप एयरलाइन आरक्षण प्रणाली करते हैं, तो जिसे आप आरक्षण कहते हैं, वह कानूनी / व्यावसायिक आरक्षण के अनुरूप नहीं हो सकता है।
बुनियादी अवधारणाओं में से कुछ वास्तव में शांत उपकरण हैं
मुझे लगता है कि ज्यादातर लोग उस पूरे "अतिशयोक्ति" करते हैं जब आपके पास एक हथौड़ा होता है, वे सभी नाखून होते हैं। मुझे लगता है कि सिक्के / दर्पण का दूसरा पक्ष उतना ही सत्य है: जब आपके पास बहुरूपता / वंशानुक्रम जैसा कोई गैजेट होता है, तो आप उपयोग करना शुरू करते हैं जहां यह दस्ताने / जुर्राब / संपर्क-लेंस की तरह फिट बैठता है। OO के उपकरण बहुत शक्तिशाली हैं। सिंगल-इनहेरिटेंस है, मुझे लगता है, लोगों को दूर नहीं करने के लिए बिल्कुल आवश्यक है, मेरा अपना
मल्टी-इनहेरिटेंस सॉफ्टवेयर समझ में
नहीं आता है।
OOP का क्या मतलब है?
मुझे लगता है कि यह एक बड़े पैमाने पर कोड आधार को संभालने का एक शानदार तरीका है। मुझे लगता है कि यह आपको कोड को व्यवस्थित करने और पुनर्गठित करने देता है और आपको यह करने के लिए एक भाषा देता है कि (जिस भाषा में आप काम कर रहे हैं उससे परे), और एक बहुत ही स्वाभाविक और आसान तरीके से कोड को संशोधित करता है।
OOP को अधिकांश डेवलपर्स द्वारा गलत समझा जाना नियत है
ऐसा इसलिए है क्योंकि यह जीवन की तरह एक आंख खोलने वाली प्रक्रिया है: आप ओओ को अधिक से अधिक अनुभव के साथ समझते हैं, और कुछ पैटर्न से बचने और दूसरों को रोजगार देना शुरू करते हैं जैसे आप समझदार होते हैं। सबसे अच्छा उदाहरणों में से एक यह है कि आप उन वर्गों के लिए विरासत का उपयोग करना बंद कर देते हैं जिन्हें आप नियंत्रित नहीं करते हैं, और इसके बजाय
मुखौटा पैटर्न पसंद करते हैं ।
अपने मिनी-निबंध / प्रश्न के बारे में
मैं यह उल्लेख करना चाहता था कि आप सही हैं। पुन: प्रयोज्यता एक पाइप-सपना है, अधिकांश भाग के लिए। यहाँ से उस विषय (शानदार) के बारे में एंडर्स हेज़िल्सबर्ग का एक उद्धरण है :
यदि आप प्रोग्रामर को कैलेंडर नियंत्रण लिखने के लिए शुरुआत करने के लिए कहते हैं, तो वे अक्सर खुद से सोचते हैं, "ओह, मैं दुनिया का सबसे अच्छा कैलेंडर नियंत्रण लिखने जा रहा हूं! यह कैलेंडर के प्रकार के संबंध में बहुरूपिक होने जा रहा है। इसमें डिस्प्लेर्स होंगे। और मुंगेर, और यह, और अन्य। " उन्हें दो महीने में एक कैलेंडर एप्लिकेशन शिप करना होगा। उन्होंने इस सारे इन्फ्रास्ट्रक्चर को नियंत्रण में रखा, और फिर दो दिन इसे ऊपर एक भद्दा कैलेंडर एप्लिकेशन लिखने में बिताया। वे सोचेंगे, "आवेदन के अगले संस्करण में, मैं बहुत कुछ करने जा रहा हूं।"
एक बार जब वे सोचने लगते हैं कि वे वास्तव में अपने अमूर्त डिजाइन के इन अन्य समसामयिकी को कैसे लागू करने जा रहे हैं, हालांकि, यह पता चला है कि उनका डिजाइन पूरी तरह से गलत है। और अब उन्होंने अपने आप को एक कोने में चित्रित किया है, और उन्हें पूरी चीज को बाहर फेंकना है। मैंने वो बार-बार देखा है। मैं न्यूनतर होने में एक मजबूत आस्तिक हूँ। जब तक आप वास्तव में सामान्य समस्या को हल करने जा रहे हैं, तब तक कोशिश न करें और किसी विशिष्ट को हल करने के लिए एक रूपरेखा रखें, क्योंकि आप नहीं जानते कि वह रूपरेखा क्या दिखना चाहिए।