सवाल यह है कि निहित प्रकार के रूपांतरण ऑपरेटर के उपयोग-मामले क्या हैं, जो मेरे कोड को समझने में अधिक कठिन नहीं होगा?
जब प्रकार असंबंधित नहीं हैं (प्रोग्रामर के लिए)। ऐसे (दुर्लभ) परिदृश्य हैं जहां आपके दो असंबंधित प्रकार हैं (जहाँ तक कोड का संबंध है), जो वास्तव में संबंधित हैं (जहाँ तक डोमेन या उचित प्रोग्रामर का संबंध है)।
उदाहरण के लिए, कुछ कोड स्ट्रिंग मिलान करने के लिए। एक आम परिदृश्य एक स्ट्रिंग शाब्दिक से मेल खाता है। कॉल करने के बजाय IsMatch(input, new Literal("some string"))
, एक अंतर्निहित रूपांतरण आपको उस समारोह से छुटकारा दिलाता है - कोड में शोर - और स्ट्रिंग शाब्दिक पर ध्यान केंद्रित करता है।
अधिकांश कोई भी प्रोग्रामर देखेगा IsMatch(input, "some string")
और जल्दी से क्या करेगा। यह कॉल साइट पर आपका कोड स्पष्ट करता है। संक्षेप में, यह समझने में थोड़ा आसान है कि क्या चल रहा है, थोड़े खर्च पर कि यह कैसे चल रहा है।
अब, आप तर्क दे सकते हैं कि एक ही कार्य करने के लिए एक साधारण कार्य अधिभार बेहतर होगा। और यह है। लेकिन अगर इस प्रकार की बात सर्वव्यापी है, तो एक रूपांतरण होने के कारण फ़ंक्शन ओवरलोड्स के ढेर करने की तुलना में क्लीनर (कम कोड, बढ़ी हुई स्थिरता) है।
और आप तर्क दे सकते हैं कि इंटरमीडिएट प्रकार को स्पष्ट रूप से बनाने के लिए प्रोग्रामर की आवश्यकता होती है, इसलिए वे देखते हैं कि "वास्तव में क्या चल रहा है"। वह कम सीधा है। व्यक्तिगत रूप से, मुझे लगता है कि "वास्तव में क्या चल रहा है" के बारे में शाब्दिक स्ट्रिंग मैच का उदाहरण बहुत स्पष्ट है - प्रोग्रामर को मैकेनिक को यह जानने की जरूरत नहीं है कि सब कुछ कैसे होता है। क्या आप जानते हैं कि आपके सभी कोड आपके द्वारा चलाए जा रहे विभिन्न प्रोसेसरों द्वारा कैसे निष्पादित होते हैं? हमेशा अमूर्तता की एक रेखा होती है जहां प्रोग्रामर इस बात की देखभाल करना बंद कर देते हैं कि कुछ कैसे काम करता है। अगर आपको लगता है कि निहित रूपांतरण कदम महत्वपूर्ण हैं, तो अंतर्निहित रूपांतरण का उपयोग न करें। यदि आपको लगता है कि वे कंप्यूटर को खुश रखने के लिए सिर्फ समारोह कर रहे हैं, और प्रोग्रामर को हर जगह उस शोर को नहीं देखना बेहतर होगा;