Identifiers

By Nuttanicha Wengwilardpaisarn 650710076

Identifiers คือ?

Identifiers หรือเรียกอีกอย่างว่า Names คือ สตริงที่ใช้ในการระบุสิ่งต่าง ๆ (entity) ให้กับโปรแกรม เช่น ชื่อคลาส ชื่อตัวแปร หรือชื่อฟังก์ชัน เป็นต้น


Identifier Rules

Identifier Rules ในแต่ละภาษาโปรแกรมก็จะมีกฎในการตั้งชื่อที่หลักการคล้ายกัน แต่รายละเอียดแตกต่างกัน โดยภาษา C# ต้องเป็นไปตามกฎดังต่อไปนี้

  • ตัวอักษร (characters) ที่สามารถใช้ได้ คือ ตัวอักษรและตัวเลขทั้งหมด [(A-Z), (a-z), (0-9)] รวมไปถึงสัญลักษณ์พิเศษ '_' (underscore)

ตัวอย่าง

MAX_SIZE

myBirthday

_tempToday

total_price

  • ต้องไม่ขึ้นต้นด้วยตัวเลข ([0-9])

ตัวอย่าง

Score12

A1B2C3

  • ต้องไม่มีช่องว่าง (white spaces)

ตัวอย่าง

My Birthday (ไม่ถูกต้อง เพราะมีช่องว่าง)

MyBirthday (ถูกต้อง เพราะไม่มีช่องว่าง)

  • ใช้คำสงวน (reserved words) หรือคำสำคัญ (keywords) ไม่ได้ นอกจากจะใช้สัญลักษณ์ '@' นำหน้า

ตัวอย่าง

as (ไม่ถูกต้อง เพราะเป็น keyword)

@as (ถูกต้อง เพราะใช้ '@' นำหน้า keyword )

  • อนุญาตให้ใช้ตัวอักษร Unicode ได้

ตัวอย่าง

ผู้ใช้

ค่า_Pi

คำนวณคะแนนสอบ()

  • ต้องระมัดระวังในการใช้ตัวพิมพ์เล็ก, ตัวพิมพ์ใหญ่ (Case Sensitive)

ตัวอย่าง

Variable

variable

ถือว่าเป็นตัวแปรคนละตัวกัน

  • ต้องมีความยาวไม่เกิน 512 ตัวอักษร

  • ห้ามมีสัญลักษณ์ '_' (underscore) ติดกัน 2 ตัว

ตัวอย่าง

__intPrice (ไม่ถูกต้อง เพราะมีการใช้สัญลักษณ์ '_' ติดกัน 2 ตัว)

intPrice (ถูกต้อง เพราะมีสัญลักษณ์ '' แค่ 1 ตัว)


Naming conventions (การตั้งชื่อ)

นอกจาก Identifiers Rules แล้ว ยังมี Naming conventions ที่ใช้ API ใน .NET ด้วย โดยทั่วไปในภาษา C# จะใช้ PascalCase สำหรับ type names, namespaces, public members ทั้งหมด และ ทีม dotnet/docs ใช้กฎการตั้งชื่อดังต่อไปนี้ที่ได้รับการยอมรับจาก ทีมการเขียนโค้ดของ .NET Runtime

  • ชื่อของ Interface ต้องเริ่มต้นด้วยตัว I พิมพ์ใหญ่

  • ชนิดของ Attribute จะต้องตามด้วย Attribute ด้านหลังด้วย

  • ชนิดของ Enum

non-flags คือ ต้องใช้ collection เพื่อเก็บค่า เพราะไม่รองรับการเก็บค่าหลายค่าในตัวแปรเดียว ทำให้ต้องใช้หน่วยความจำมากขึ้น

flags คือ รวมค่าหลายค่าในตัวแปรเดียว โดยการใช้ Bitwise เช่น AND, OR, NOT

  • Identifier ห้ามมีสัญลักษณ์ '_' (underscore) ติดกัน 2 ตัว

  • ใช้ชื่อที่มีความหมาย หรือสื่อความหมายชัดเจน สำหรับตัวแปร, เมธอด และคลาส

  • ควรใช้ชื่อที่ชัดเจนมากกว่าชื่อที่กระชับแต่ไม่ชัดเจน

  • ใช้ PascalCase สำหรับชื่อคลาส และชื่อเมธอด

PascalCase คือ การตั้งชื่อให้ตัวอักษรตัวแรกของแต่ละคำเป็นตัวพิมพ์ใหญ่

  • ใช้ camelCase สำหรับพารามิเตอร์

camelCase คือ การตั้งชื่อให้ตัวอักษรตัวแรกของคำแรกเป็นตัวพิมพ์เล็ก และตัวอักษรตัวแรกของคำถัดไปเป็นตัวพิมพ์ใหญ่

  • ใช้ PascalCase สำหรับชื่อคงที่ และค่าคงที่

  • ฟิลด์แบบ Private ต้องเริ่มต้นด้วยสัญลักษณ์ '_' (underscore)

  • ฟิลด์แบบ Static ต้องเริ่มด้วย s_

  • ไม่ควรใช้ตัวย่อหรืออักษรย่อในชื่อ ให้ใช้ชื่อที่สื่อความหมายชัดเจน นอกจากจะเป็นคำย่อที่ได้รับการยอมรับเป็นวงกว้างหรือรู้จักกันโดยทั่วไป

  • การใช้ namespces ที่มีความหมายชัดเจน โดยใช้ reverse domain name notation สำหรับจัดระเบียบโค้ด

  • เลือกชื่อ Assembly ที่แสดงให้เห็นถึงวัตุประสงค์หลัก

  • ไม่ควรตั้งชื่อที่มีตัวอักษรเพียงตัวเดียว ให้ใช้ชื่อที่ชัดเจน

ยกเว้นในกรณีของ loop ง่าย ๆ


เปรียบเทียบ Identifiers ในภาษา C#, Java, C, Python

  • Identifiers Rules

คุณสมบัติ
C#
Java
C
Python

เริ่มต้นชื่อ

สามารถใช้ตัวอักษร (A-Z, a-z) หรือสัญลักษณ์ '_' , '$’

สามารถใช้ตัวอักษร (A-Z, a-z) หรือสัญลักษณ์ '_' , '$

สามารถใช้ตัวอักษร (A-Z, a-z) หรือสัญลักษณ์ '_'

สามารถใช้ตัวอักษร (A-Z, a-z) หรือสัญลักษณ์ '_’

ตัวเลขนำหน้า

ตามด้วยอักษร

ตามด้วยตัวเลข (0-9)

ใช้สัญลักษณ์ ‘_’

ใช้ได้ทั้งนำหน้าและตาม

ใช้ได้ทั้งนำหน้าและตาม

ใช้ได้ทั้งนำหน้าและตาม

ใช้ได้ทั้งนำหน้าและตาม

ใช้สัญลักษณ์ ‘$’

ใช้ได้ทั้งนำหน้าและตาม (แต่ไม่แนะนำ)

ใช้ได้ทั้งนำหน้าและตาม (แต่ไม่แนะนำ)

การแยกตัวพิมพ์ใหญ่, ตัวพิมพ์เล็ก

✅ (case-sensitive)

✅ (case-sensitive)

✅ (case-sensitive)

✅ (case-sensitive)

คำสำคัญ (keyword)

ใช้ไม่ได้

ใช้ไม่ได้

ใช้ไม่ได้

ใช้ไม่ได้

ความยาว

ไม่จำกัด

ไม่จำกัด

ไม่จำกัด (แต่ไม่ควรยาวเกินไป)

ไม่จำกัด

รูปแบบการตั้งชื่อ

camelCase/

PascalCase

camelCase

underscore

snake_case

ตัวอย่าง code

  • C#

มีการใช้ camelCase, PascalCase ในชื่อ และใช้สัญลักษณ์ ‘_’ นำหน้าชื่อ

  • Java

มีการใช้ camelCase ในชื่อ และใช้สัญลักษณ์ ‘$’ , ‘_’ นำหน้าชื่อ

  • C

มีการใช้สัญลักษณ์ ‘_’ ในชื่อ และนำหน้าชื่อ

  • Python

มีการใช้ snake_case และใช้สัญลักษณ์ ‘_’ ในชื่อและนำหน้าชื่อ


Slide

Clip


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

C#

Java

C

Python

Last updated