ตอน 17: หลักการตั้งชื่อในภาษา C#

ไปหน้าแรก | สารบัญ | Laploy.comระเบียนบทความ | บทความจากลาภลอย

เว็บไซต์นี้เป็นตัวอย่างเนื้อหาบางตอนในหนังสือ "เรียนรู้ด้วยตนเอง OOP C# ASP.NET" ครอบคลุม บทที่ 1 ถึงบทที่ 6 (ในหนังสือมี 21 บท) เนื้อหาใน Blog อาจอาจแตกต่างจากในหนังสือเพราะเป็นเนื้อหาที่ยังไม่ได้ตรวจแก้ขัดเกลา (edit)

กดที่นี่เพื่อดูรายละเอียดเนื้อหาในแต่ละบท

กดที่นี่เพื่อไปยังเว็บบอร์ด ถาม-ตอบ 

 

 

หลักการตั้งชื่อในภาษา C#

ในขณะเขียนโปรแกรมท่านต้องตั้งชื่อสิ่งต่างๆ มากมาย ไม่ว่าจะเป็น คลาส field method property ฯลฯ ล้วนแล้วแต่จะต้องถูกตั้งชื่อโดยท่านทั้งนั้น การตั้งชื่อให้เหมาะสมมีความสำคัญ เพราะมันจะช่วยให้โปรแกรมอ่านง่าย แก้ไขโปรแกรมได้ง่าย หากท่านทำงานคนเดียว มันจะช่วยให้ท่านมีความสุข เมื่อท่านต้องกลับมาแก้ไขโปรแกรมที่ท่านเขียนอีกครั้ง หลังจากเวลาผ่านไปหลายเดือน หากท่านทำงานหลายคน มันจะช่วยให้เพื่อนร่วมงานของท่านอ่านเข้าใจโค้ดของท่านได้ง่ายขึ้น

วิธีตั้งชื่อที่ดีในการเขียนโปรแกรมภาษา C# ก็เหมือนกับการเขียนโปรแกรมในภาษา .NET อื่นๆ คือไม่มีกฎเกณฑ์ตายตัว สิ่งที่ผู้เขียนจะเรียนให้ทราบต่อไปนี้เป็นเพียงแนวทางปฏิบัติเท่านั้น

 

เลิกใช้ฮังกาเรียนโนเตชันได้แล้ว : ในยุค Win32 นักเขียนโปรแกรมภาษา C++ จะยึดมั่นอยู่กับวิธีตั้งชื่อที่ประดิษฐ์โดยนักเขียนโปรแกรมชาวฮังการีชื่อ ชาลส์ ซิมอะนาย (Charles Simonyi) ซึ่งแนะให้ใส่คำย่อของ data type ไว้นำหน้าชื่อยกตัวอย่างเช่น

  • iBar ตัวแปรชนิดอินทีเจอร์
  • bFoo ตัวแปรชนิดบูลลีน
  • pszOwner พอยน์เตอร์ที่ชี้ไปยัง string ที่ปิดท้ายด้วยเลขศูนย์

วิธีการตั้งชื่อเช่นนี้เรียกว่า Hungarian notation ซึ่งนับว่าเหมาะดีสำหรับการเขียนโปรแกรมในยุค Win32 เพราะทำให้โปรแกรมเมอร์รู้ทันทีว่า object นั้นมี type เป็นอย่างไรเพียงแค่เห็นชื่อ ช่วยลดโอกาสเกิดความขัดแย้งเรื่อง type ระหว่าง object ต่างๆ ลงไปได้

แต่การเขียนโปรแกรมยุค .NET โปรแกรมเมอร์ไม่ต้องกังวลเรื่องความขัดแย้งนี้อีกต่อไป เพราะโปรแกรมใน .NET มีคุณสมบัติ type-safe และสิ่งต่างๆ กลายเป็น object ไปหมด เพียงเลื่อนเมาส์ไปยังชื่อ โปรแกรม Visual Studio ก็จะแสดง type ให้เห็นทันที การตั้งชื่อตามลัทธิ ฮังกาเรียน โนเตชัน จึงไม่จำเป็น และไม่เหมาะสมอีกต่อไป

 

ชาล์ส ซิมอะนาย (Charles Simonyi) ผู้ริเริ่มวิธีฮังกาเรียนโนเตชัน (ภาพนี้ถ่ายในปี 1970 ปัจจุบัน ซิมอะนาย เป็นมหาเศรษฐี เป็นศาสตราจาร์ยมหาวิทยาลัยอ๊อกซ์ฟอร์ด และเจ้าของบริษัทสร้างยานอวกาศเอกชน)

 

แทนที่ด้วย อูฐ ปาสคาลและใหญ่หมด : ทีมผู้สร้าง .NET Framework ส่งเสริมให้นักเขียนโปรแกรมหันมาใช้วิธีตั้งชื่อสามแบบคือ Pascal case และ Camel case และ Upper case

วิธีตั้งชื่อสามแบบนี้เกิดจากข้อจำกัดที่ว่าชื่อต่างๆ ไม่สามารถมี space อยู่เป็นส่วนหนึ่งของชื่อได้ ยกตัวอย่างเช่นท่านต้องการตั้งชื่อตัวแปรไว้เก็บราคาสินค้า ท่านจะตั้งชื่อตัวแปรอย่างนี้ไม่ได้

Product Price หรือ product price

ที่ไม่ได้เพราะระหว่างคำว่า product กับคำว่า price มีตัว space (เคาะวรรค) อยู่ ซึ่งเป็นสิ่งต้องห้าม ท่านจึงจำเป็นจะต้องเขียนติดกันเป็นพรืดไปหมดอย่างนี้

ProductPrice หรือ productprice หรือ Product_price

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

วิธีตั้งชื่อแบบ Pascal case คือวิธีตั้งชื่อตามแบบซ้ายสุดในตัวอย่างข้างบน หลักการก็ง่ายๆ คือให้ตัวอักษรตัวแรกเป็นตัวใหญ่ (upper case) หากเป็นคำที่ประกอบจากหลายคำให้ตัวอักษรแรกของทุกคำเป็นตัวใหญ่ ยกตัวอย่างเช่น AppDomain, ErrorLevel, ReadValue และ ToString เป็นต้น

ไมโครซอฟท์แนะนำให้ใช้วิธีตั้งชื่อแบบ Pascal case นี้กับ type ต่างๆ ต่อไปนี้

Class, Enum, Event, Exception, Read-only Static field, Interface, Method, Namespace, Property และ public instance field

ส่วนการเขียนแบบ Camel case คือการเขียนโดยใช้หลักการเช่นเดียวกับ Pascal case เว้นแต่ว่าตัวอักษรตัวแรกให้เป็นตัวเล็ก (lower case) ดังนั้นหากผู้เขียนต้องการเขียนชื่อตัวแปรสำหรับเก็บราคาสินค้า ProductPrice ให้เป็นแบบ Camel case ก็จะได้เป็นแบบนี้ productPrice ยกตัวอย่างชื่อที่ตั้งโดยวิธี Camel case คือ backColor, frontView, hotFatCat และ scoreInFirstTerm เป็นต้น

ไมโครซอฟท์แนะนำให้ใช้วิธีตั้งชื่อแบบ Camel case นี้กับ type ต่างๆ ดังต่อไปนี้

Field, Parameter, Protected instance field

 

ส่วนการตั้งชื่อแบบ upper case เป็นการใช้ตัวอักษรตัวใหญ่ทั้งหมด แต่แนะนำให้ใช้กับคำย่อเท่านั้น อย่างเช่น System.IO และ System.Web.UI เป็นต้น การตั้งชื่อตัวคงค่า (constant) ให้ใช้แบบ Pascal ไม่ควรใช้ตัวใหญ่ทั้งหมดเช่น PRODUCTPRICE เพราะการใช้ตัวอักษรตัวใหญ่ล้วนๆ บนจอคอมพิวเตอร์ดูขวางหูขวางตา เหมือนมีคนส่งเสียงอื้อฉาว

การตั้งชื่อ object ต่างๆ ในยุค .NET นิยมใช้ชื่อที่สื่อความหมายเต็ม โดยไม่ต้องกังวลเรื่องความยาว ยกตัวอย่างเช่น ท่านต้องการตั้งชื่อฟิลด์ที่ไว้ใช้เก็บที่อยู่ของลูกค้าก็ให้ตั้งว่า customerStreetAddress ไม่ใช่ custStrAdd เพราะชื่อที่ไม่ใช่คำย่ออ่านแล้วเข้าใจได้เร็วกว่าชื่อที่เป็นคำย่อ ท่านไม่ต้องห่วงว่าเวลาเขียนโค้ดจะพิมพ์ยากหรือเสียเวลามาก เพราะ IDE (Integrated Development Environment) สมัยใหม่มีความสามารถสูง ช่วยอำนวยความสะดวกในการป้อนพิมพ์ชื่อยาวๆ ได้เป็นอย่างดี

 

ตอนต่อไป: นิพจน์ในภาษา C#

Post a comment or leave a trackback: Trackback URL.

ความเห็น

  • พิมพ์ชนก  On พฤศจิกายน 29, 2007 at 5:25 pm

    สุดยอดเลยวุ้ย G E N I U S อัจฉริยะภาพ C#นับว่าเป็นภาษาเขียนโปรแกรมที่สุดยอด "อัจฉริยะเท่านั้นที่จะค้นหาเรื่องราวแบบนี้"

ใส่ความเห็น