ความจริงแล้วการเขียนโปรแกรม มันไม่มีกฎตายตัวหรอกว่าคุณจะต้องเขียนให้ตรงรูปแบบที่ชาวบ้านเขาใช้กัน คือทำยังไงให้โปรแกรมมันทำงานได้ก็จบแล้วล่ะประเด็นเลย
แต่การเขียนโปรแกรมไม่ใช่การทำงานคนเดียวเป็นส่วนมาก เราต้องทำงานกับคนอื่น การเขียนโค้ดแบบมี format จะทำให้เขาไม่แอบว่าเราลับหลังว่าไอ้นี่มันเขียนอะไรของมัน อ่านยากจริงๆ
ตัวอย่างเช่นมีโค้ดอยู่ 2 ชุด
function foo(int a, int b, int c = null){if(a % 2 == 0){for(int i = 0; i<b;i++) { c += c == null ? i : i + c; }} return c; }
และ
function foo(int a, int b, int c = null){ if(a % 2 == 0){ for(int i = 0; i<b;i++){ c += c == null ? i : i + c; } } return c; }
อันไหนดูโค้ดเป็นระเบียบน่าเขียนต่อมากกว่ากันล่ะ (คุณอาจจะชอบแบบแรกก็เป็นได้นะ ฮา)
นั่นเป็นแค่เกริ่นนำ เรื่องเขียนโค้ดเป็นระเบียบ อ่านง่าย คนอื่นมาทำต่อแล้วเข้าใจ มันมีหลายปัจจัย เช่น แบ่งและสร้าง Class ดูเป็นขั้นตอน หรือการใช้ Design Pattern ที่คนรู้จักเยอะๆ ก็มีส่วน
แต่วันนี้จะมาพูดถึงสไตล์การเขียนโค้ดเกี่ยวกับการตั้งชื่อตัวแปรหรือ variable
camel case style
สไตล์แรกที่เราจะพูดถึงกับคือ รูปแบบอูฐ !
การตั้งชื่อตัวแปรแบบอูฐจะทำให้รูปร่างของตัวแปรคล้ายๆ กับตัวอูฐ งงมั้ยครั้บ (ฮา)
ตัวอย่างเช่น เราจะสร้างตัวแปรหนึ่งขึ้นมาเพื่อเก็บจำนวนของพนักงานในขณะนี้
numberOfEmployee
ถ้าเราใช้รูปแบบคาเมลจะได้หน้าตาออกมาเป็นแบบนี้ จากชื่อ number of employee ที่ภาษาโปรแกรมส่วนใหญ่มักไม่ให้ตั้งชื่อตัวแปรโดยมีช่องว่าง ทำให้เราต้องเอาชื่อพวกนั้นมาติดกัน
แต่จะให้เขียนแบบ
numberofemployee
ก็ออกจะติดกันเกินไปหน่อยจนมันอ่านยาก เขาเลยคิดว่า งั้นให้ตัวแรกของแต่ละคำเป็นตัวใหญ่ละกัน นั่นเป็นที่มาของรูปแบบคาเมล (ยกเว้นตัวแรกที่ใช้เป็นตัวเล็กได้) รูปร่างมันก็เลยคล้ายๆ กับโหนดของอูฐนั่นเอง
ส่วนถ้าตัวแปรตัวนั้นไม่ใช่ variable แต่เป็นชื่อคลาสเราจะตั้งให้ตัวแรกของคำแรกเท่านั้นเป็นตัวใหญ่เช่น
EmployeeTimeRecord
แล้วนอกจากลักษณะการตั้งชื่อตัวแปร การวางปีกกาก็ไม่เหมือนกันด้วยนะ โดยถ้าเป็น camel มันจะเป็นแบบนี้
function toDoSomething(){ if(true){ //do something! } }
นั่นคือวางปีกกาด้านหลัง ส่วนข้างในจะแท็บเข้าไป1ครั้ง แล้วปิดปีกกาให้ตรงแนวกับชื่อ/ตัวเปิด
snake case style
ต่อมา เราจะมาพูดถึงการเขียนรูปแบบงู !
มีอูฐแล้วยังไม่พอ มีงูต่ออีก
สำหรับรูปแบบงู ถ้าเราจะสร้างตัวแปรเอามาเก็บจำนวนพนักงานเราจะใช้แบบนี้
number_of_employee
ใช้เครื่องหมาย _ (เครื่องหมาย underscore) ในการคั่นแต่ละคำเอาไว้ วิธีนี้จะทำให้คำยาวขึ้นเล็กน้อย แต่ว่าแต่ละตัวโดยรวมแล้วจะมีความสูงเท่ากัน
ส่วนถ้าตัวแปรตัวนั้นไม่ใช่ variable แต่เป็นชื่อคลาสเราจะตั้งให้ตัวแรกของทุกคำเป็นตัวใหญ่เช่น
Employee_Time_Record
แล้วทางด้านการวางปีกกาล่ะ
function to_do_something() { if(true) { //do something! } }
คล้ายๆ กับ camel นั่นแหละ แต่ snake มักจะวางปีกกาตอนขึ้นบรรทัดใหม่แล้ว ... แค่นั้นอ่ะเหรอ? แค่นั้นแหละ! แต่แค่นี้ก็ทำให้โปรแกรมเมอร์แบ่งพวกออกเป็น 2 ฝ่ายได้แล้วนะ
แล้วอันไหนดีกว่า?
ไม่มีอันไหนที่ดีกว่าหรอก มีแต่ว่าคุณชอบแบบไหนมากกว่ากัน (เซ้นส์ด้านความงามของแต่ละคนไม่เหมือนกัน) โดยส่วนตัวแล้ว เราจะใช้ camel กับ method + Class ส่วน variable ธรรมดาจะชอบแบบ snake มากกว่า
แถม...
Microsoft Style
อันนี้เป็นรูปแบบการเขียนที่บริษัทไมโครซอฟท์ใช้กับภาษา C# .NET นั่นคือ
NumberOfEmployee
คล้ายๆ คาเมลแต่ว่าตัวแรกจะเป็นตัวใหญ่เสมอ
แล้วทำไมเราถึงไม่ชอบน่ะเหรอ?
มี 2 เหตุผล
- ตัวแปรเป็นตัวใหญ่มันพิมพ์ช้ากว่าตัวเล็กหมด
- แยกไม่ออกว่าอันไหนเป็น variable method Class
ได้ความรู้สำหรับมือใหม่ ขอบคุณคับ