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

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

By

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

By

4 mins read
Thai
23
June, 2024
จัดการ Array ด้วย Javascript (Clone Deep)
23 June, 2024
จัดการ 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.