9.2.11

variables naming : ว่าด้วยเรื่องการตั้งชื่อตัวแปร



variable naming

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

     เกริ่นมาซะยาว จริงๆ วันนี้ ผมตั้งใจ จะเล่าเรื่องสไตล์ในการตั้งชื่อตัวแปร ไม่ใช่ว่าเค้านึกอยากจะตั้งอย่างไร ก็ได้ ก็จริงอยู่ที่เราสามารถตั้งชื่อตัวแปรอย่างไรก็ได้ ตามใจฉัน เพราะฉันเป็นคนเขียนโปรแกรมนี้ขึ้นมา ขออย่างเดียว อย่าไปซ้ำกับคำสงวนแค่นั้นพอ แต่เพื่อนๆ ทราบไหมว่า การตั้งชื่อตัวแปร จริงๆ แล้วเค้ามีธรรมเนียมปฏิบัติกันอยู่ (คำว่า ธรรมเนียม แปลว่า ถ้าเราไม่ทำตาม ก็ไม่ผิดกฏ) เรามาดูกันว่า มีอะไรบ้าง

      ธรรมเนียมปฏิบัติที่มีประโยชน์มากอย่างหนึ่ง ในการตั้งชื่อตัวแปร ที่ใช้กันอยู่ทั่วไปนั่นก็คือ การระบุชนิดของตัวแปร เข้าไปในชื่อของตัวแปรด้วย รูปแบบการประกาศแบบนี้ เราเรียกว่า “Hungarian Notation”

      ในการประกาศตัวแปร แบบฮังกาเรียน นั้น จะมีการเพิ่มตัวอักษรพิมพ์เล็กนำหน้าชื่อตัวแปร เพื่อเป็นการบ่งบอกถึงชนิดของตัวแปร  ตัวอย่างเช่น

  • bBusy : boolean
  • chInitial : char
  • cApples : count of items
  • dwLightYears : double word (systems)
  • fBusy : boolean (flag)
  • nSize : integer (systems) or count (application)
  • iSize : integer (systems) or index (application)
  • fpPrice: floating-point
  • dbPi : double (systems)
  • pFoo : pointer
  • rgStudents : array, or range
  • szLastName : zero-terminated string
  • u32Identifier : unsigned 32-bit integer (systems)
  • stTime : clock time structure
  • fnFunction : function name

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

      ธรรมเนียมในการตั้งชื่อตัวแปรยาวๆ ก็ยังมีให้เห็น สอง รูปแบบหลักๆ ก็คือ แบบแรกเป็นการใช้ตัวอักษรพิมพ์ใหญ่ที่ต้นคำ แล้วเขียนติดกันไปเลย และเมื่อผสมกับรูปแบบฮังกาเรียนเข้าไปด้วย ก็จะต้องเขียนอักษรย่อบ่งบอกชนิดตัวแปรไว้ข้างหน้าด้วย ตัวอย่างเช่น

int iCountStudent;

     ส่วนอีกรูปแบบหนึ่งก็คือ การใช้ตัวอักษรพิมพ์เล็กทั้งหมด แล้วใช้ขีดล่าง (under score) คั่นระหว่างคำ โดยเมื่อใช้กับรูปแบบฮังกาเรียนแล้ว ก็จะเขียนอักษรย่อกำกับไว้ข้างท้าย ตัวอย่างเช่น

char *record_primary_key_p;

     ทั้งสองรูปแบบนี้ เห็นได้เยอะมาก แต่ไม่ว่าคุณจะเลือกการประกาศชื่อตัวแปร แบบไหนก็ตาม ก็ขอให้คุณยึดหลักแบบนั้น ไว้ทั้งโปรแกรม แต่อย่างไรก็ดี หากคุณไม่แน่ใจว่าจะเลือกใช้รูปแบบไหนดี ตัวเลือกหนึ่งที่ช่วยให้คุณตัวสินใจได้ง่ายขึ้น นั่นก็คือ ให้คุณสังเกตที่ไลบรารี ของภาษาที่เราเลือกใช้ แล้วก็จงใช้ตามหลักของภาษานั้น เหตุผลก็เพราะว่า จะทำให้โค๊ดโปรแกรมของคุณ ดูเป็นเนื้อเดียวกัน

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

1 ความคิดเห็น:

Anonymous said...

ขอบคุณค่ะ :)

Post a Comment

 

เกี่ยวกับฉัน(ไหมเนี้ย)

My photo

สวัสดีครับ ชื่อเปิ้ลนะครับ ถ้ามีอะไรให้ช่วยเหลือได้ ก็จะช่วยครับ
ผมได้สร้างบล๊อกไว้ เพื่อเก็บรวบรวมความรู้ และประสบการณ์ในการทำงานครับ แวะไปเยี่ยมชมกันได้ครับ http://mechacity.blogspot.com และบล๊อก http://faker-programmer.blogspot.com ครับ

รายการบล๊อกอื่นๆ

  • Solved: error: 'TKD2' was not declared in this scope, LIFA_Base compile error - วันนี้ จะมาเล่าถึงปัญหาที่เจอในการเบิร์นโค๊ด LIFA_Base ที่เราใช้ในการทำให้ Arduino ของเราสามารถรับคำสั่งจาก LabVIEW ได้ ปัญหานี้ เริ่มเกิดขึ้นตอนที่ Ard...
  • Type-Fu : Typing practice game online - หากใครที่สนใจ หรือจะต้องทำงานเกี่ยวกับคอมพิวเตอร์ หนึ่งในความจำเป็นก็คือ จะต้องเรียนรู้ที่พิมพ์สัมผัสได้ เพราะการที่พิมพ์สัมผ้สได้ มันได้ประโยชน์หลายๆ อย...

Blog อื่นๆ ที่น่าติดตาม

เหล่าบรรดา Blogger