मुझे लगता है कि जब आप चेक किए जाते हैं तो प्रकारों की जांच की जाती है तो आप उलझन में हैं। रनटाइम टाइपिंग जरूरी नहीं है।
स्थिर प्रकारों का मुख्य लाभ वही है जो आप कहते हैं: वे संपूर्ण हैं। आप भरोसा कर सकते हैं कि सभी कॉल साइटें कंपाइलर को यह करने की अनुमति देकर इस प्रकार के अनुरूप होती हैं।
स्थिर प्रकारों की मुख्य सीमा यह है कि वे उन बाधाओं में सीमित हैं जो वे व्यक्त कर सकते हैं। यह भाषा द्वारा भिन्न होता है, जिसमें अधिकांश भाषाओं में अपेक्षाकृत सरल प्रकार के सिस्टम (सी, जावा) होते हैं, और बहुत शक्तिशाली प्रकार वाले सिस्टम (हैकेल, केयेन) वाले अन्य लोग होते हैं।
इस सीमा प्रकार के कारण स्वयं पर्याप्त नहीं हैं। उदाहरण के लिए, जावा प्रकारों में टाइप नाम मिलान की जांच करने के लिए कम या ज्यादा प्रतिबंधित हैं। इसका मतलब है कि आप जिस बाधा को चेक करना चाहते हैं उसका अर्थ किसी प्रकार की नामकरण योजना में एन्कोड किया जाना चाहिए, इसलिए जावा कोड के लिए आम तौर पर संकेतों और बॉयलर प्लेट की पर्याप्तता है। सी ++ उस टेम्पलेट्स में थोड़ा बेहतर है थोड़ा अधिक अभिव्यक्ति की अनुमति देता है, लेकिन आप निर्भर प्रकारों के साथ क्या कर सकते हैं इसके करीब न आएं। मुझे यकीन नहीं है कि अधिक शक्तिशाली प्रकार के सिस्टम के डाउनसाइड्स क्या हैं, हालांकि स्पष्ट रूप से कुछ या अधिक लोग उद्योग में उनका उपयोग करेंगे।
आप स्थिर टाइपिंग का उपयोग कर रहे यहां तक कि अगर, तो संभावना यह काफी अर्थपूर्ण सब कुछ आप के बारे में परवाह जाँच करने के लिए नहीं है, तो आप परीक्षण भी लिखने के लिए की आवश्यकता होगी रहे हैं।स्थिर टाइपिंग आप और अधिक प्रयास की तुलना में यह बॉयलरप्लेट में आवश्यकता की बचत होती है चाहे एक बहस है कि उम्र के लिए नाराजगी जताई है और कहा कि मुझे नहीं लगता कि सभी परिस्थितियों के लिए एक सरल उत्तर नहीं है।
अपने दूसरे प्रश्न के रूप में:
हम कैसे फिर से कारक कर सकते हैं सुरक्षित रूप से एक क्रम टाइप किया भाषा में?
जवाब परीक्षण है। आपके परीक्षणों में महत्वपूर्ण सभी मामलों को शामिल करना होगा। उपकरण आपके परीक्षणों को पूरा करने के अनुमान में आपकी सहायता कर सकते हैं। कवरेज जांच उपकरण आपको बताते हैं कि कोड की गीली रेखाएं परीक्षण द्वारा कवर की जाती हैं या नहीं। टेस्ट उत्परिवर्तन उपकरण (जेस्टर, हेक्ल) आपको बता सकता है कि क्या आपके परीक्षण तार्किक रूप से अपूर्ण हैं। स्वीकृति परीक्षण आप जानते हैं कि आप मैचों आवश्यकताओं लिखा है, और अंत में प्रतिगमन और प्रदर्शन परीक्षण सुनिश्चित करना है कि उत्पाद के प्रत्येक नए संस्करण पिछले की गुणवत्ता बनाए रखता हैं।
विस्तृत प्रकार के संकेतों पर निर्भर बनाम जगह पर उचित परीक्षण करने के बारे में महान चीजों में से एक यह है कि डिबगिंग बहुत आसान हो जाती है। परीक्षण चलाते समय आपको परीक्षणों के भीतर विशिष्ट असफल दावे मिलते हैं जो स्पष्ट रूप से व्यक्त करते हैं कि वे क्या कर रहे हैं, संकलक त्रुटि कथन (सोचने के लिए C++ टेम्पलेट त्रुटियों) को समझने के बजाय।
कोई फर्क नहीं पड़ता कि आप कौन से टूल्स का उपयोग करते हैं: जिस कोड को आप विश्वास करते हैं उसे प्रयास करने की आवश्यकता होगी। सबसे अधिक संभावना है कि बहुत सारे परीक्षण लिखने की आवश्यकता होगी। यदि बग के लिए दंड बहुत उच्च है, जैसे एयरोस्पेस या मेडिकल कंट्रोल सॉफ्टवेयर, तो आपको अपने सॉफ़्टवेयर के व्यवहार को साबित करने के लिए औपचारिक गणितीय तरीकों का उपयोग करने की आवश्यकता हो सकती है, जो इस तरह के विकास को बेहद महंगी बनाती है।
आप अभी भी रिफैक्टर करेंगे, आप आईडीई/कंपाइलर के प्रतिस्थापन के रूप में यूनिट परीक्षणों का उपयोग करेंगे। एक बार जब आप इसका इस्तेमाल करते हैं तो यह वास्तव में बुरा नहीं होता है। –