สัญกรณ์ฮังการีเพียงทำให้รู้สึกในภาษาโดยไม่ต้องประเภทที่ผู้ใช้กำหนด ในฟังก์ชันที่ทันสมัยหรือภาษา OO คุณจะเข้ารหัสข้อมูลเกี่ยวกับ "ชนิด" ของค่าลงในประเภทข้อมูลหรือคลาสแทนที่จะเป็นชื่อตัวแปร
หลายคำตอบอ้างอิงบทความ Joels อย่างไรก็ตามโปรดทราบว่าตัวอย่างของเขาอยู่ใน VBScript ซึ่งไม่รองรับคลาสที่ผู้ใช้กำหนดเอง (อย่างน้อยก็เป็นเวลานาน) ในภาษาที่มีชนิดที่ผู้ใช้กำหนดเองคุณจะแก้ปัญหาเดียวกันได้โดยสร้าง HtmlEncodedString-type จากนั้นให้เมธอด Write ยอมรับเฉพาะสิ่งนั้น ในภาษาที่พิมพ์แบบคงที่คอมไพลเลอร์จะตรวจจับข้อผิดพลาดในการเข้ารหัสใด ๆ ในการพิมพ์แบบไดนามิกคุณจะได้รับข้อยกเว้นรันไทม์ - แต่ในกรณีใด ๆ คุณจะได้รับการป้องกันจากการเขียนสตริงที่ไม่ได้เข้ารหัส สัญกรณ์ภาษาฮังการีเปลี่ยนโปรแกรมเมอร์ให้เป็นตัวตรวจสอบประเภทมนุษย์โดยเป็นงานประเภทหนึ่งที่โดยทั่วไปแล้วซอฟต์แวร์จะจัดการได้ดีกว่า
Joel แยกความแตกต่างระหว่าง "ระบบฮังการี" และ "แอปฮังการี" โดยที่ "ระบบฮังการี" เข้ารหัสประเภทในตัวเช่น int, float และอื่น ๆ และ "แอปฮังการี" เข้ารหัส "ชนิด" ซึ่งเป็นข้อมูลเมตาระดับสูงกว่า เกี่ยวกับตัวแปรตามประเภทเครื่องใน OO หรือภาษาที่ใช้งานได้สมัยใหม่คุณสามารถสร้างประเภทที่ผู้ใช้กำหนดได้ดังนั้นจึงไม่มีความแตกต่างระหว่างประเภทและ "ชนิด" ในแง่นี้ - ทั้งสองสามารถแสดงโดยระบบประเภท - และ "แอป" ฮังการีมีความซ้ำซ้อนพอ ๆ กับฮังการี "ระบบ"
ดังนั้นเพื่อตอบคำถามของคุณ: Systems Hungarianจะมีประโยชน์ในภาษาที่ไม่ปลอดภัยและพิมพ์ผิดเท่านั้นซึ่งเช่นการกำหนดค่า float ให้กับตัวแปร int จะทำให้ระบบขัดข้อง สัญกรณ์ภาษาฮังการีถูกคิดค้นขึ้นโดยเฉพาะในช่วงอายุหกสิบเศษเพื่อใช้ในBCPLซึ่งเป็นภาษาระดับต่ำที่ไม่ได้ทำการตรวจสอบประเภทใด ๆ เลย ฉันไม่คิดว่าภาษาใด ๆ ในการใช้งานทั่วไปในวันนี้มีปัญหานี้ แต่สัญกรณ์อาศัยอยู่บนเป็นชนิดของการเขียนโปรแกรมสินค้าศาสนา
แอปฮังการีจะมีเหตุผลหากคุณกำลังทำงานกับภาษาโดยไม่มีประเภทที่ผู้ใช้กำหนดเช่น VBScript เดิมหรือ VB เวอร์ชันก่อนหน้า บางทีอาจเป็น Perl และ PHP เวอร์ชันแรก ๆ อีกครั้งการใช้มันในยุคใหม่เป็นลัทธิการขนส่งสินค้าที่บริสุทธิ์
ภาษาฮังการีเป็นภาษาที่น่าเกลียดซ้ำซ้อนและเปราะบาง มันซ้ำข้อมูลรู้จักกันอยู่แล้วจากระบบการพิมพ์และคุณไม่ควรซ้ำตัวเอง ใช้ชื่อที่สื่อความหมายสำหรับตัวแปรที่อธิบายจุดประสงค์ของอินสแตนซ์เฉพาะของประเภทนี้ ใช้ระบบ type เพื่อเข้ารหัสข้อมูลที่ไม่เปลี่ยนแปลงและข้อมูลเมตาเกี่ยวกับ "ชนิด" หรือ "คลาส" ของตัวแปร - เช่น ประเภท
ประเด็นทั่วไปของบทความ Joels - การมีรหัสผิดดูผิดเป็นหลักการที่ดีมาก อย่างไรก็ตามการป้องกันจุดบกพร่องที่ดียิ่งขึ้นคือ - เมื่อเป็นไปได้ - คอมไพเลอร์จะตรวจพบรหัสผิดโดยอัตโนมัติ