इस प्रश्न को उत्तर देने योग्य बनाने के लिए, मान लें कि प्रोग्रामर के दिमाग में अस्पष्टता की लागत कहीं अधिक है तो कुछ अतिरिक्त कीस्ट्रोक्स।
यह देखते हुए कि, मैं अपने साथियों को अपने कार्य मापदंडों की व्याख्या न करने की अनुमति क्यों दूंगा ? निम्नलिखित कोड को एक उदाहरण के रूप में लें जो कोड का एक अधिक जटिल टुकड़ा हो सकता है:
let foo x y = x + y
अब, टूलटिप की एक त्वरित परीक्षा आपको दिखाएगी कि F # ने आपको x और y के ints के लिए निर्धारित किया है। यदि आपका इरादा यही है, तो सब ठीक है। लेकिन मुझे नहीं पता कि क्या आप का इरादा है। क्या होगा अगर आपने दो तारों को एक साथ जोड़ने के लिए यह कोड बनाया था? या क्या होगा अगर मुझे लगता है कि आप शायद युगल को जोड़ने के लिए हैं? या क्या होगा अगर मैं सिर्फ अपने प्रकार को निर्धारित करने के लिए हर एक फ़ंक्शन पैरामीटर पर माउस को हॉवर नहीं करना चाहता?
अब इसे एक उदाहरण के रूप में लें:
let foo x y = "result: " + x + y
F # अब यह मान लेता है कि आपने स्ट्रिंग को संक्षिप्त करने का इरादा किया है, इसलिए x और y को स्ट्रिंग्स के रूप में परिभाषित किया गया है। हालाँकि, आपके कोड को बनाए रखने वाले गरीब schmuck के रूप में, मैं इसे देख सकता हूं और आश्चर्यचकित हो सकता हूं कि शायद आपने x और y (ints) को एक साथ जोड़ने का इरादा किया था और फिर परिणाम को UI उद्देश्यों के लिए स्ट्रिंग में जोड़ दिया।
निश्चित रूप से ऐसे सरल उदाहरणों के लिए कोई इसे जाने दे सकता है, लेकिन स्पष्ट प्रकार के एनोटेशन की नीति क्यों नहीं लागू करता है?
let foo (x:string) (y:string) = "result: " + x + y
असंदिग्ध होने में क्या हानि है? निश्चित रूप से, एक प्रोग्रामर गलत प्रकारों को चुन सकता है कि वे क्या करने की कोशिश कर रहे हैं, लेकिन कम से कम मुझे पता है कि वे इसका इरादा रखते थे, कि यह सिर्फ एक निरीक्षण नहीं था।
यह एक गंभीर सवाल है ... मैं अभी भी एफ # के लिए बहुत नया हूं और अपनी कंपनी के लिए निशान को धधक रहा हूं। जिन मानकों को मैं अपनाता हूं, वे संभवतः सभी भविष्य के एफ # कोडिंग के लिए आधार होंगे, अंतहीन कॉपी-पेस्टिंग में एम्बेडेड होंगे जो मुझे यकीन है कि आने वाले वर्षों के लिए संस्कृति को आगे बढ़ाएगा।
तो ... क्या F # के प्रकार के निष्कर्ष के बारे में कुछ विशेष है जो इसे आवश्यक होने पर केवल एनोटेट करते हुए इसे धारण करने के लिए एक मूल्यवान सुविधा बनाता है? या विशेषज्ञ एफ # -ers गैर-तुच्छ अनुप्रयोगों के लिए अपने मापदंडों को एनोटेट करने की आदत बनाते हैं?