camel case VS snake case .. สไตล์การเขียนโค้ด 2 แบบที่เจอบ่อย

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

แต่การเขียนโปรแกรมไม่ใช่การทำงานคนเดียวเป็นส่วนมาก เราต้องทำงานกับคนอื่น การเขียนโค้ดแบบมี 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 ฝ่ายได้แล้วนะ

รูปจาก 9gag

 

แล้วอันไหนดีกว่า?

ไม่มีอันไหนที่ดีกว่าหรอก มีแต่ว่าคุณชอบแบบไหนมากกว่ากัน (เซ้นส์ด้านความงามของแต่ละคนไม่เหมือนกัน) โดยส่วนตัวแล้ว เราจะใช้ camel กับ method + Class ส่วน variable ธรรมดาจะชอบแบบ snake มากกว่า

แถม...

Microsoft Style

อันนี้เป็นรูปแบบการเขียนที่บริษัทไมโครซอฟท์ใช้กับภาษา C# .NET นั่นคือ

NumberOfEmployee

คล้ายๆ คาเมลแต่ว่าตัวแรกจะเป็นตัวใหญ่เสมอ
แล้วทำไมเราถึงไม่ชอบน่ะเหรอ?
มี 2 เหตุผล

  1. ตัวแปรเป็นตัวใหญ่มันพิมพ์ช้ากว่าตัวเล็กหมด
  2. แยกไม่ออกว่าอันไหนเป็น variable method Class
5189 Total Views 2 Views Today
Ta

Ta

สิ่งมีชีวิตตัวอ้วนๆ กลมๆ เคลื่อนที่ไปไหนโดยการกลิ้ง .. ถนัดการดำรงชีวิตโดยไม่โดนแสงแดด
ปัจจุบันเป็น Senior Software Engineer อยู่ที่ Centrillion Technology
งานอดิเรกคือ เขียนโปรแกรม อ่านหนังสือ เขียนบทความ วาดรูป และ เล่นแบดมินตัน

2 Responses

  1. ่John พูดว่า:

    ได้ความรู้สำหรับมือใหม่ ขอบคุณคับ

  1. 9 กันยายน 2018

    […] Camel-Case (ใครไม่รู้จักคาเมล อ่านได้ที่นี่) ไม่เขียนแบบนี้ก็ได้ […]

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องที่ต้องการถูกทำเครื่องหมาย *