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