เพื่อนๆเคยสงสัยกันมั้ยว่าทำไมโค้ดที่คนเก่งๆเขียนมันออกมาหน้าตาคล้ายๆกัน เขารู้ได้ยังไงว่าต้องเขียนแบบนี้
ผมเคยผ่านช่วงแรกที่ในทีมไม่มีกำหนดเรื่องนี้ ก็ได้แต่เขียนตามๆคนอื่น 55+ แบบไม่รู้ว่าเขียนแบบนี้เพราะอะไร จะเขียนตามสไตล์ใครดีแต่ละคนไม่เหมือนกันอีกอ่าว
วันนี้เลยจะมาแชร์จากสิ่งที่ผมรู้ ว่าจริงๆแล้วมีมีแนวทางของมันอยู่ มาดูกัน
Code Style คืออะไร

Code Style คือ แนวทาง ในการจัด format โค้ดว่าควรจัด style ไหน อย่างเช่น
- เว้นวรรคตอนไหนบ้าง
- ชื่อขึ้นต้นใช้ตัวใหญ่หรือเล็ก
- เคาะบรรทัดดีมั้ย
บอกตรงนี้ก่อนเลยว่า ไม่มีอันไหนถูกผิดนะคับ 😆
Code Style & Code Convention
เราเรียกมันได้หลายอย่าง Coding Style, Coding Convention ซึ่งมีหน้าที่เดียวกันคือ
การจัด format ให้ดูสวยสบายตา ถูกใจคนอ่านอย่างเราๆ
สาเหตุที่อ่านสบายตาเพราะ สมองคนเราสามารถอ่าน code ที่ format เหมือนกันได้เร็วกว่าเยอะ
ซึ่งตอนทำงานจริงจะเขียนกฎขึ้นเองเลย หรือเลือกใช้ของคนอื่น ได้ทั้งนั้น แต่หลังจากทุกคนตกลงกันได้แล้ว มันก็จะกลายเป็น code convention ที่ทุกคนต้องทำตาม
Basic Guideline
บางภาษาเขาให้ Starter Kit มาเลยว่าภาษาเขาควรเขียนประมาณไหน ส่วนถ้าไม่มีก็ไม่เป็นไร community dev ใหญ่มาก เกือบทุกภาษามีกลุ่มคนใจดีจากทั่วโลกคิดมาให้เรียบร้อย 😍
ตัวอย่างตามภาษายอดฮิต
- Python: PEP 8
- JavaScript: Google JavaScript Style Guide
- Java: Google Java Style Guide
- C#: Microsoft C# Coding Conventions
- C++: Google C++ Style Guide
- PHP: WordPress PHP Coding Standard
- TypeScript: Handbook – The TypeScript Handbook
- R: Tidyverse Style Guide
- Go: Google Go Style
- Kotlin: Kotlin Coding Conventions
- Swift: Swift API design guidelines แต่แอบบ่นหน่อยว่า apple ทำมาไม่ค่อยละเอียดเลย 😂
ของภาษาอื่นๆ ลอง search ใน google ด้วยชื่อภาษา ตามด้วย style guide หรือ convention เลยคับ เช่น “JavaScript Style Guide”, “JavaScript Convention”

ซึ่งหลักๆที่ผมเห็นจะมีหมวดหมู่ประมาณนี้คร่าวๆ
- การเว้นช่องว่างระหว่างตัวอักษร
- การตั้งชื่อ (case ต่างๆ เช่น camel case, snake case)
- ความห่าง (Indentation)
- การเขียนคอมเม้น
- การประกาศตัวแปร
- จำนวนบรรทัด และ คอลั่มน์
Benefit of Code Conventions
dev อย่างเราๆต้องใช้บ่อยเลย เพราะเป็น 1 วิธีในการเขียน code ให้ clean และมี quality และ ทำให้เราสื่อสารกับคนอื่น (ผ่านโค้ด) ได้ดีขึ้นมากกๆ
นอกจากเรื่องความสวยและความสะอาดตาของ code แล้ว ยังมีข้อดีอื่นๆคือ
- ทุกคนเขียนเหมือนกันหมด ทำให้แก้ไขอะไรง่ายขึ้นเยอะ
- อ่านง่ายขึ้น อันนี้แน่นอน
- เข้าใจตรงกัน เมื่อคนใหม่มาเขียนต่อ
- professional
- ลด technical dept
- เก่งขึ้น แค่เขียนเหมือนคนเก่งๆ เราก็เก่งขึ้นนิดนึงแล้วว 55+
ยิ่งทีมเรามีคนเยอะเท่าไหร่เรื่องนี้จะยิ่งสำคัญมากขึ้นตามเลย

เพราะเวลาทุกคนเขียนสไตล์เหมือนๆกัน ก็คือ code base ที่มีระเบียบนั่นเอง ซึ่งคนเดียวทำไม่ได้แน่นอน ต้องอาศัยทุกคนช่วยกัน ✌️
Software Engineer เก่งๆหลายคนบอกว่า code ที่ดีควรจะอ่านทุกหน้าแล้วเหมือน มีคนเขียนคนเดียว (คือโค้ดน้อยเหมือนไม่มีใครทำหรอพี่? 🤣 ผ่าม)
แต่ส่วนตัวผมว่าการที่ทุกคนจะเขียนเหมือนกันเป๊ะๆ 100% เอาเข้าจริงๆมันอาจจะยากและตึงไปสะหน่อย เอาเป็นว่า มีกฎที่แน่นอนยึดละทำตามให้ได้มากที่สุดก็ดีละค้าบบ
Team’s opinion come first

Respect the rules
แต่ละคนมีความชอบ style ไม่เหมือนกันอยู่แล้ว เป็นเรื่องธรรมดา
ถ้าเราเขียนคนเดียวจะไม่ใช้ก็ยังได้ 55+ แต่เมื่อไหร่ที่เราทำงานเป็นทีม สำคัญมากๆที่เราจะต้องเคารพและเขียนตาม coding style ของทีมน้า
Adapting
ถ้า project อยู่ในช่วงเริ่มต้นก็ลุยหา convention ที่ต้องการกันเลย ช่วยกันหาอันที่เหมาะที่สุดกับทีม
แต่ถ้าเราต้องไปทำ project ที่มีอยู่ก่อนแล้ว ใช้ของเดิมเลยดีที่สุดด
Which Conventions should I use?
ลุง Bob Robert R. Martin บอกไว้ในหนังสือ clean code ว่า ควรใช้ style ที่คนใช้กันเยอะๆ (Industry Standard)
คงเพราะ Engineer เก่งๆระดับโลกเขาช่วยกันคิดมาแล้วเอาเวลาไป dev เถอะ ลุงไม่ได้กล่าว 55+
ส่วนตัวจากที่ผมดูมา แนะนำให้ใช้อันที่เขาทำ document มาชัดเจน มีตัวอย่างเยอะๆ จะได้ไม่มีปัญหาเวลาที่เราสงสัย

ต้องขอบคุณ Google เลยที่เขาทำ Google Style Guides ขึ้นมาเองไว้ให้ dev ใช้ภายในบริษัทเองเลย ไม่พอยังเอามาแบ่งให้คนอื่นใช้ด้วย กราบ doc ละเอียดมาก ส่วนตัวผมก็ใช้ของ google style เป็นหลักนะ (ป้ายยา 55) แนะนำเลย ใช้แล้วเหมือนเป็น dev google มาเอง
หรือจะลองหา style ที่ชอบในลิสนี้ดูก็ได้คับ มีหลายภาษาเลย ดีมากๆ ลองไปปรับใช้กันดูครับ
Awesome list of coding style conventions and standard by Kristories
หวังว่าจะมีประโยชน์กับเพื่อนๆนะครับ
อ่านจบแล้ว มาแชร์แลกเปลี่ยนกันได้น้าเพื่อนๆ ใช้แบบไหนอยู่ แบบไหนใช้แล้วดี หรือไม่ใช้เลย ลอง comment ได้นะครับ


Leave a Reply