25May, 2023
Language blog :
Thai
Share blog : 
25 May, 2023
Thai

Coding standard การตั้งชื่อ

By

1 mins read
Coding standard การตั้งชื่อ

ในทางของการเขียนโปรแกรมคอมพิวเตอร์ “naming convention” คือชุดของกฎที่ถูกเลือกใช้ในการระบุซึ่ง การแสดงถึงตัวแปร ชนิดของฟังก์ชั่น และสิ่งอื่นๆ ภายในซอร์สโค้ดและเอกสารประกอบ เหตุผลในการใช้ naming convention มีดังต่อไปนี้

  • เพื่อลดความพยายามในการอ่านและทำความเข้าใจซอร์สโค้ด

  • เพื่อให้การตรวจทานโค้ดมุ่งเน้นไปที่ปัญหาที่สำคัญกว่ามาตรฐานไวยากรณ์และการตั้งชื่อ

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

  • ใช้คำให้เหมือนกัน (Consistency)

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

coding

จากตัวอย่างทั้ง 3 มีจุดประสงค์ในการทำงานเดียวกันคือ “ดึงข้อมูลของผู้ใช้งาน” แต่ทั้ง 3 ใช้คำที่แตกต่างกัน ผลที่ตามมาของการใช้ที่หลากหลายในโปรเจค จะทำให้เกิดความคิดที่ขัดแย้งกัน ว่าเราควรจะเลือกคำใดในการตั้งชื่อตัวแปรหรือฟังก์ชั่้น ในอนาคตที่มีจุดประสงค์ในการทำงานแบบเดียวกัน เช่น “ดึงข้อมูลของสินค้า” จะเกิดความคิดที่ว่า ควรใช้ get, fetch หรือ retrive อันไหนดี ฉะนั้นการเลือกใช้คำให้เหมือนกันจะช่วยลดเวลาการตัดสินใจในสิ่งที่ไม่จำเป็นนั้นเอง

 

ใช้คำที่มีความหมายและอ่านออกเสียงได้อย่างชัดเจน (Use Pronounceable Names)

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

fname

จากตัวอย่างคือ ตัวแปร fName ใช้เก็บข้อมูล “ชื่อ-นามสกุล” หรือ “ชื่อจริง” ก็ได้ เพราะ fName สามารถเป็นได้ทั้ง FirstName และ FullName แล้วแต่การตีความของตัวบุคคล เช่นเดียวกันกับ ตัวแปร tBook อาจจะถูกตีความว่า ใช้เก็บข้อมูล “จำนวนหนังสือ” หรือ “ชื่อของหนังสือ” เพราะ tBook อาจหมายถึง titleBook หรือ totalBook ก็ได้ ฉะนั้นการตั้งชื่อที่มีความหมายและอ่านออกเสียงได้อย่างชัดเจน จะช่วยลดปัญหาการนำตัวแปรไปใช้ผิดวัตถุประสงค์ของการทำงาน

 

ความแตกต่างที่มีความหมาย (Meaningful Distinctions)

บางครั้งคำๆ เดียวกันแต่จุดประสงค์ของการทำงานนั้นต่างกัน มีหลายครั้งที่คำๆ เดียวกันในบริบท (Context) ที่ต่างกัน ให้ผลลัพธ์ของการทำงานที่ไม่เหมือนกัน

 

class calculator

ทั้งสอง class มีฟังก์ชั่นชื่อว่า add เหมือนกัน ทั้ง 2 ฟังก์ชั่นมีชื่อถูกต้องตรงตามวัตถุประสงค์ของ class ทั้งคู่ ใน class calculator ฟังก์ชั่น add(x,y) เป็นการบวกเลข 2 จำนวน ส่วนใน class cart ฟังชั่น add(x) เป็นการเพิ่มสินค้าลงในตระกร้า หากเราทำการ search ใน project ด้วย wording “add” เราจะพบ function ทั้งสอง จะดีกว่าไหม ถ้าเราเปลี่ยนเป็นแบบนี้
add(x,y) -> addNumbers(x, y)

add(x) -> insertElement(x)

เมื่อเป็นแบบนี้เราก็จะสามารถ search หาฟังก์ชั่นที่ตรงตามความต้องการได้ง่ายยิ่งขึ้น ช่วยประหยัดเวลาในการค้นหา

 

ใช้คำที่มีความหมายในเชิงบวก (Be Positive)

ทิศทางความหมายของคำ ส่งผลต่อเวลาที่ใช้ในการตีความหมายและความเข้าใจต่อคำนั้นๆ โดยปกติแล้วของมนุษย์เราจะเข้าใจคำที่มีความหมายในเชิงบวกง่ายกว่าเชิงลบ และพื้นฐานการทำงานของ computer จะทำงานตามความ”จริง” (Boolean) เงื่อนไขนั้นจะต้องเป็น “จริง” เสมอ โปรแกรมจึงจะทำงานต่อไป

positive naming

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

  • If (notEnabled) {} หมายความว่า ถ้า”ไม่ได้เปิดใช้งาน” จึงจะทำงานตามซอร์สโค้ดภายใต้ {} (Curly brackets)

  • If (notClosed) {} หมายความว่า ถ้า”ไม่ปิด” จึงจะทำงานตามซอร์สโค้ดภายใต้ {} (Curly brackets)

  • If (notBanned) {} หมายความว่า ถ้า”ไม่ห้าม” จึงจะทำงานตามซอร์สโค้ดภายใต้ {} (Curly brackets)

 

ถ้าเราเปลี่ยนเงื่อนไขให้เป็นความหมายในเชิงบวกดังนี้

  • If (isDisabled) {} หมายความว่า ถ้า”ถูกปิดใช้งาน” จึงจะทำงานตามซอร์สโค้ดภายใต้ {} (Curly brackets)

  • If (isOpen) {} หมายความว่า ถ้า”เปิด” จึงจะทำงานตามซอร์สโค้ดภายใต้ {} (Curly brackets)

  • If (isAllowed) {} หมายความว่า ถ้า”ได้รับอนุญาต” จึงจะทำงานตามซอร์สโค้ดภายใต้ {} (Curly brackets)

 

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

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

 

แหล่งอ้างอิง

 

Written by
Senna Labs
Senna Labs

Subscribe to follow product news, latest in technology, solutions, and updates

- More than 120,000 people/day visit to read our blogs

Other articles for you

09
May, 2025
JS class syntax
9 May, 2025
JS class syntax
เชื่อว่าหลายๆคนที่เขียน javascript กันมา คงต้องเคยสงสัยกันบ้าง ว่า class ที่อยู่ใน js เนี่ย มันคืออะไร แล้วมันมีหน้าที่ต่างกับการประกาศ function อย่างไร? เรามารู้จักกับ class ให้มากขึ้นกันดีกว่า class เปรียบเสมือนกับ blueprint หรือแบบพิมพ์เขียว ที่สามารถนำไปสร้างเป็นสิ่งของ( object ) ตาม blueprint หรือแบบพิมพ์เขียว( class ) นั้นๆได้ โดยภายใน class

By

4 mins read
Thai
09
May, 2025
15 สิ่งที่ทุกธุรกิจต้องรู้เกี่ยวกับ 5G
9 May, 2025
15 สิ่งที่ทุกธุรกิจต้องรู้เกี่ยวกับ 5G
ผู้ให้บริการเครือข่ายในสหรัฐฯ ได้เปิดตัว 5G ในหลายรูปแบบ และเช่นเดียวกับผู้ให้บริการเครือข่ายในยุโรปหลายราย แต่… 5G มันคืออะไร และทำไมเราต้องให้ความสนใจ บทความนี้ได้รวบรวม 15 สิ่งที่ทุกธุรกิจต้องรู้เกี่ยวกับ 5G เพราะเราปฏิเสธไม่ได้เลยว่ามันกำลังจะถูกใช้งานอย่างกว้างขวางขึ้น 1. 5G หรือ Fifth-Generation คือยุคใหม่ของเทคโนโลยีเครือข่ายไร้สายที่จะมาแทนที่ระบบ 4G ที่เราใช้อยู่ในปัจจุบัน ซึ่งมันไม่ได้ถูกจำกัดแค่มือถือเท่านั้น แต่รวมถึงอุปกรณ์ทุกชนิดที่เชื่อมต่ออินเตอร์เน็ตได้ 2. 5G คือการพัฒนา 3 ส่วนที่สำคัญที่จะนำมาสู่การเชื่อมต่ออุปกรณ์ไร้สายต่างๆ ขยายช่องสัญญาณขนาดใหญ่ขึ้นเพื่อเพิ่มความเร็วในการเชื่อมต่อ การตอบสนองที่รวดเร็วขึ้นในระยะเวลาที่น้อยลง ความสามารถในการเชื่อมต่ออุปกรณ์มากกว่า 1 ในเวลาเดียวกัน 3. สัญญาณ 5G นั้นแตกต่างจากระบบ

By

4 mins read
Thai
09
May, 2025
จัดการ Array ด้วย Javascript (Clone Deep)
9 May, 2025
จัดการ Array ด้วย Javascript (Clone Deep)
ในปัจจุบันนี้ ปฏิเสธไม่ได้เลยว่าภาษาที่ถูกใช้ในการเขียนเว็บต่าง ๆ นั้น คงหนีไม่พ้นภาษา Javascript ซึ่งเป็นภาษาที่ถูกนำไปพัฒนาเป็น framework หรือ library ต่าง ๆ มากมาย ผู้พัฒนาหลายคนก็มีรูปแบบการเขียนภาษา Javascript ที่แตกต่างกัน เราเลยมีแนวทางการเขียนที่หลากหลาย มาแบ่งปันเพื่อน ๆ เกี่ยวกับการจัดการ Array ด้วยภาษา Javascript กัน เรามาดูตัวอย่างกันเลยดีกว่า โดยปกติแล้วการ copy ค่าจาก value type ธรรมดา สามารถเขียนได้ดังนี้

By

4 mins read
Thai

Let’s build digital products that are
simply awesome !

We will get back to you within 24 hours!Go to contact us
Please tell us your ideas.
- Senna Labsmake it happy
Contact ball
Contact us bg 2
Contact us bg 4
Contact us bg 1
Ball leftBall rightBall leftBall right
Sennalabs gray logo28/11 Soi Ruamrudee, Lumphini, Pathumwan, Bangkok 10330+66 62 389 4599hello@sennalabs.com© 2022 Senna Labs Co., Ltd.All rights reserved.