हंगेरियन नोटेशन का उद्देश्य पहचानकर्ता में जानकारी को एनकोड करना है जो अन्यथा टाइप सिस्टम में एन्कोड नहीं किया जा सकता है। मेरा अपना मत यह है कि यदि यह जानकारी एन्कोडेड होना महत्वपूर्ण है, तो यह महत्वपूर्ण है कि टाइप सिस्टम में एनकोड किया जाए, जहां यह ठीक से जांचा जा सके। और अगर जानकारी महत्वपूर्ण नहीं है, तो क्यों बिल्ली आप इसके साथ अपने स्रोत कोड को अव्यवस्थित करना चाहते हैं?
या, इसे अधिक संक्षेप में कहें: टाइप जानकारी सिस्टम प्रणाली में है। (ध्यान दें: यह एक स्थिर प्रकार की प्रणाली होने की आवश्यकता नहीं है । जब तक यह प्रकार की त्रुटियों को पकड़ता है, मुझे ध्यान नहीं है कि उन्हें कब पकड़ा जाए।)
अन्य उत्तरों के एक जोड़े ने हंगरी संकेतन के स्वीकार्य उपयोग के रूप में माप की इकाइयों का उल्लेख किया है। (मुझे आश्चर्य है कि किसी ने नासा के मंगल जलवायु परिक्रमा का अभी तक उल्लेख नहीं किया है, क्योंकि यह हंगेरियन नोटेशन के बारे में चर्चा में हर समय आता है)।
यहाँ F # में एक सरल उदाहरण दिया गया है:
[<Measure>] type m
[<Measure>] type ft
let someLength = 48.15<m>
let someOtherLength = 16.2342<ft>
someLength + someOtherLength
// someLength + someOtherLength
// -------------^^^^^^^^^^^^^^^
// error FS0001: The unit of measure 'ft' does not match the unit of measure 'm'.
देखो, मा, कोई हंगेरियन नहीं!
अगर मैं थे बजाय यहां प्रकार के हंगेरी संकेतन, उपयोग करने के लिए है कि मेरी मदद नहीं होता एक बिट:
let mSomeLength = 48.15
let ftSomeOtherLength = 16.2342
mSomeLength + ftSomeOtherLength
// > val it : float = 64.3842
संकलक इसे सीधे जाने दें। मैं अब एक मानव पर भरोसा करने के लिए भरोसा कर रहा हूं कि अनिवार्य रूप से एक त्रुटि क्या है। क्या ऐसा नहीं है कि एक प्रकार की चेकर किसके लिए है?
इससे भी बेहतर, फ्रिंक प्रोग्रामिंग भाषा का उपयोग करना :
someLength = 48.15m
someOtherLength = 16.2342ft
someLength + someOtherLength
// 53.09818416 m (length)
// Wanna know the answer in a good old fashioned American unit?
someLength + someOtherLength -> yd
// 58.06888031496062992
// Are you an astrophysicist?
someLength + someOtherLength -> parsec
// 1.7207949554318336148e-15
// ... or a fundmentalist Christian who refuses to use units invented
// less than 2000 years ago?
someLength + someOtherLength -> biblicalcubits
// 95.893563822870765006
तो, सारांश में: मुझे हंगेरियन नोटेशन पसंद नहीं है। आपको इसका उपयोग कभी नहीं करना चाहिए।
कहा जा रहा है, मुझे लगता है कि हंगेरियन नोटेशन का उपयोग करना एक अच्छा विचार है। रुको क्या?
हाँ! इस विशेष मामले में , आपने उल्लेख किया है:
इसके अलावा, हमारे अधिकांश कोड को कुछ अजीब डीएसपी पर चलना पड़ता है, जहां किसी भी तरह से बूल या फ्लोट जैसी अवधारणा मौजूद नहीं है
लेकिन वह यह है कि ठीक ही समझदार उपयोग के मामले के लिए हंगेरी संकेतन!
पुनश्च: मैं पूरी निष्ठा से फ्रिंक को देखने की सलाह देता हूं। इसके मैनुअल में अब तक के सबसे भयानक गोज़ चुटकुले हैं। यह भी एक बहुत अच्छी भाषा है :-)