ผู้คนใช้ Hungarian Naming Conventions ในโลกจริงหรือไม่?

Hungarian Naming Convention หรือ Hungarian Notation เป็นหัวข้อที่มีการถกเถียงกันในหมู่โปรแกรมเมอร์มาหลายปี แม้ว่าจะถูกพัฒนาขึ้นด้วยเจตนาดี แต่หลายคนสงสัยว่ามันยังใช้ได้อยู่หรือไม่ในปัจจุบัน คุ้มค่าที่จะเสียเวลาเพื่อเรียนรู้ข้อตกลงนี้หรือไม่ หรือมันเป็นอุปสรรคต่อความสามารถในการอ่านและบำรุงรักษาในภาษาการเขียนโปรแกรม?

ในโพสต์นี้ เราจะสำรวจประสิทธิภาพของ Hungarian Notation สองรูปแบบหลักของมัน และว่ามันมีประโยชน์ในสภาพแวดล้อมการเขียนโค้ดในปัจจุบันหรือไม่

Hungarian Notation คืออะไร?

Hungarian Notation เป็นรูปแบบการตั้งชื่อในโปรแกรมมิ่งที่ใช้การทำให้ชื่อของตัวแปรเริ่มต้นด้วยข้อมูลเกี่ยวกับประเภทของตัวแปรหรือวัตถุประสงค์ที่ตั้งใจจะใช้งาน มีสองหมวดหมู่หลักของ Hungarian Notation:

  1. Systems Hungarian Notation: การใส่ prefix ให้กับตัวแปรตามประเภทข้อมูลของมัน (เช่น int สำหรับจำนวนเต็ม, str สำหรับสตริง)
  2. Apps Hungarian Notation: การใส่ prefix ให้กับตัวแปรตามการใช้งานในแอปพลิเคชัน ซึ่งมีเป้าหมายเพื่อส่งเสริมความเข้าใจเกี่ยวกับบริบทของตัวแปรนั้นๆ

มองอย่างใกล้ชิดที่สองรูปแบบ

Systems Hungarian Notation

  • ตัวอย่าง: int iLength;

ใน Systems Hungarian Notation การเน้นอยู่ที่ประเภทข้อมูล ซึ่งทำให้มันอ่านได้ง่ายกว่าทันที อย่างไรก็ตาม วิธีการนี้มีข้อเสีย ด้วยการใช้งาน IDE ที่ทันสมัยและสมาร์ทเอดิเตอร์ มันมักจะไม่จำเป็นต้องมี prefix แบบนี้ เพราะเครื่องมือเหล่านี้สามารถแสดงประเภทของตัวแปรได้อย่างรวดเร็ว

Apps Hungarian Notation

  • ตัวอย่าง: การใส่ prefix ตัวแปรที่ตั้งใจให้มีความยาวด้วย l เช่น int lLength;

Apps Hungarian Notation มุ่งเน้นไปที่วัตถุประสงค์ของตัวแปรมากกว่าที่จะเน้นที่ประเภทข้อมูลอย่างเคร่งครัด วิธีนี้สามารถช่วยให้เข้าใจโค้ดได้ดีขึ้น โดยเฉพาะเมื่อมีการสร้างสมการหรือการดำเนินการ ดังตัวอย่างต่อไปนี้:

  • การใช้งานที่ดี:

    int vBox = aBottom * lVerticalSide; // นี่มีความหมาย
    
  • การใช้งานที่สับสน:

    int aBottom = lSide1; // นี่ทำให้เกิดคำถามเกี่ยวกับเจตนา
    

ทำไม Hungarian Notation อาจถูกมองว่าซ้ำซ้อน

แม้จะมีวัตถุประสงค์เดิม แต่หลายคนเชื่อว่า Hungarian Notation โดยเฉพาะ Systems Hungarian Notation ได้สูญเสียความเกี่ยวข้องไป นี่คือบางประเด็นที่ควรพิจารณา:

  • Smart Editors: สภาพแวดล้อมการพัฒนาสมัยใหม่และเอดิเตอร์สามารถแสดงการประกาศตัวแปรได้ในทันที จึงลดความจำเป็นในการใช้ตัวชี้ประเภทแบบ prefix
  • ปัญหาความสามารถในการอ่าน: Prefix อาจทำให้ชื่อของตัวแปรยุ่งเหยิง ทำให้โค้ดอ่านไม่ง่ายเท่าที่ควร

ดังนั้น โปรแกรมเมอร์จำนวนมากจึงเลือกใช้กลยุทธ์การตั้งชื่อที่ชัดเจนและมีคำอธิบายซึ่งเพิ่มความสามารถในการสร้างเอกสารภายในโค้ดโดยไม่ต้องพึ่งพาการสั้นของโน้ต

ประสบการณ์ส่วนตัวเกี่ยวกับข้อตกลงการตั้งชื่อ

ในขณะที่ฉันโดยทั่วไปไม่ได้ใช้ Hungarian Notation ทุกรูปแบบ แต่ฉันใช้สไตล์การใส่ prefix ส่วนตัวโดยใช้ขีดล่าง (_) สำหรับฟิลด์ของคลาสที่เป็นส่วนตัว การตั้งชื่อที่ชัดเจนนี้ช่วยแยกประเภทของตัวแปรออกโดยไม่มีความไม่สับสนหรือยุ่งเหยิงจาก prefix แบบ Hungarian ฉันใช้รูปแบบการตั้งชื่อที่สอดคล้องกันที่รวมถึง camel case สำหรับคุณสมบัติสาธารณะ ทำให้โค้ดมีความสะอาดมากขึ้นและอ่านได้ง่ายขึ้น

บทสรุป: Hungarian Notation คุ้มค่าหรือไม่?

การถกเถียงเกี่ยวกับ Hungarian Notation มักจบลงด้วยความรู้สึกที่ว่าในขณะที่มันอาจมีคุณค่าในอดีต แต่การใช้งานจริงในโปรแกรมมิ่งสมัยใหม่มีข้อจำกัด

สุดท้ายแล้วว่าจะใช้ Hungarian Notation หรือไม่นั้นขึ้นอยู่กับความชอบส่วนบุคคล นักพัฒนาควรพิจารณาเปรียบเทียบประโยชน์กับความซับซ้อนของการเขียนโค้ดในปัจจุบัน การเน้นโค้ดที่สร้างเอกสารเองและชื่อตัวแปรที่มีคำอธิบายมักจะให้โค้ดที่ชัดเจน สะอาด และดูแลรักษาได้ง่ายขึ้นในระยะยาว

คุณคิดเห็นอย่างไร?

คุณเคยใช้ Hungarian Notation หรือคุณชอบข้อตกลงการตั้งชื่ออื่นๆ? แชร์ความคิดและประสบการณ์ของคุณในความคิดเห็นด้านล่าง!