จุดประสงค์ของสัญกรณ์ฮังการีคือการเข้ารหัสข้อมูลลงในตัวระบุที่ไม่สามารถเข้ารหัสได้ในระบบประเภท ความคิดเห็นของฉันเองคือถ้าข้อมูลนี้มีความสำคัญมากพอที่จะถูกเข้ารหัสมันก็สำคัญที่จะถูกเข้ารหัสในระบบประเภทซึ่งสามารถตรวจสอบได้อย่างถูกต้อง และถ้าข้อมูลนั้นไม่สำคัญทำไมคุณถึงอยากจะทำให้ซอร์สโค้ดของคุณยุ่งเหยิง?
หรือเพื่อทำให้สำเร็จมากขึ้น: ข้อมูลประเภทเป็นของระบบประเภท (หมายเหตุ: มันไม่จำเป็นต้องเป็นระบบแบบสแตติกตราบใดที่มันจับข้อผิดพลาดประเภทฉันไม่สนใจว่าเมื่อมันจับพวกเขา)
สองสามคำตอบอื่น ๆ ที่กล่าวถึงหน่วยวัดเป็นการใช้ที่ยอมรับได้ของสัญลักษณ์ของฮังการี (ฉันรู้สึกประหลาดใจที่ไม่มีใครพูดถึง NASA Mars Climate Orbiter เนื่องจากมันดูเหมือนว่าจะเกิดขึ้นตลอดเวลาในการอภิปรายเกี่ยวกับสัญกรณ์ฮังการี)
นี่คือตัวอย่างง่ายๆใน 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
คอมไพเลอร์ปล่อยให้มันผ่านไป ตอนนี้ฉันกำลังพึ่งพามนุษย์เพื่อตรวจสอบสิ่งที่เป็นข้อผิดพลาดประเภท นั่นไม่ใช่ตัวตรวจสอบประเภทใช่หรือไม่
ยิ่งไปกว่านั้นการใช้ภาษาการเขียนโปรแกรม Frink :
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
ดังนั้นโดยสรุป: ฉันไม่ชอบสัญกรณ์ฮังการี คุณไม่ควรใช้มัน
ที่ถูกกล่าวว่าฉันคิดว่าการใช้สัญลักษณ์ฮังการีเป็นความคิดที่ดี รออะไร?
ใช่ ในกรณีพิเศษนี้คุณพูดถึง:
นอกจากนี้โค้ดส่วนใหญ่ของเราต้องทำงานกับ DSP ที่แปลกประหลาดบางอย่างซึ่งแนวคิดอย่างบูลหรือโฟลไม่มีอยู่จริง
แต่ที่เป็นได้อย่างแม่นยำเพียงกรณีการใช้งานที่เหมาะสมสำหรับฮังการีโน้ต!
PS: ฉันขอแนะนำให้ดู Frink ด้วยใจจริง คู่มือมีบางส่วนที่ตลกที่สุดผายลม มันยังเป็นภาษาที่ค่อนข้างเท่ห์ :-)