
สำหรับบทความนี้แอดขอเปิดด้วยมีมนี้เลย แอดเชื่อเหลือเกินว่าคงจะไม่มีใครชอบโค้ดที่ยุ่งเหยิง ติดกันเป็นพรืด กว่าจะอ่านเข้าใจใช้หน่วยประมวลผลในสมอง เอาแทบปวดกระบาล โดยในการเขียนโปรแกรมเราจะสามารถใช้ช่องว่าง การเยื้อง หรือ indentation ทำให้โค้ดของอ่านอ่านง่ายยิ่งขึ้นในแบบด้านล่างจากภาพนั่นเอง
ซึ่งเราก็จะเห็นได้ว่าการเขียนโปรแกรม ไม่ได้เขียนแค่ให้มันสามารถทำงานได้ แต่ไม่สนใจว่ารูปแบบของโค้ดจะเป็นยังไง มือใหม่ส่วนใหญ่มักจะเจอปัญหานี้ เขียนไปสักพักจะเริ่มเข้าใจดีว่า “โค้ดที่ดี” ไม่ได้ทำให้แค่ทำงานได้เท่านั้น แต่ต้องอ่านง่ายด้วย เพราะไม่ใช่แค่เราเข้าใจ แต่ต้องทำให้คนอื่นเข้าใจด้วย
Indentation คืออะไร?

มาเข้าเรื่องกันเลยครับ โดย Indentation คือการย่อหน้าหรือเว้นช่องว่าง เพื่อจัดรูปแบบโค้ดให้ดูง่าย ๆ ซึ่งช่องว่างเหล่านี้บางภาษาคอมพิวเตอร์ก็ไม่ได้สนใจจำนวนช่องว่างเหล่านี้ แต่บางภาษาอย่าง Python การใช้ย่อหน้าถือว่าเป็นหนึ่งใน syntax หากมีการเว้นผิด ชีวิตเปลี่ยน! อาจจะทำให้โค้ดรันไม่ได้เลย ตัวอย่างในภาษา Python การจัดวาง indent นั้นมีความสำคัญมาก หากไม่มีการจัดวาง Indentation ที่ถูกต้อง โค้ดจะไม่สามารถรันได้ ถ้าเราลองเขียนแบบที่ไม่สนใจ indent เมื่อเรากดรันจะเห็นได้ว่ามันไม่สามารถรันได้

ใน Python เราจะต้องมีการจัด indent เพื่อบอกขอบเขตของส่วนต่าง ๆ เช่นฟังก์ชัน if else เป็นต้น หากเราใส่ indent ถูกต้องแล้ว จะเห็นได้ว่าโค้ดก็จะสามารถรันได้

ส่วนภาษาที่ไม่ได้สนใจเรื่อง indent แต่ใช้ตัวแบ่งอื่นแทนอย่างใน JavaScript หรือ C++ ก็จะใช้เป็นเครื่องหมายปีกกา {} ในการกำหนดขอบเขตแทน ตัวอย่างเช่นโค้ดนี้ที่มีการจัด indent เรียบร้อยก็รันได้ปกติ

แต่ถ้าลองไม่จัด indent ให้ดี โค้ดยังคงรันได้อยู่

สำหรับภาษาไหนบังคับใช้ indent มั้ย แอดสรุปมาให้แล้ว
- Python ภาษานี้ใช้แทน {} ในการกำหนดขอบเขตของโค้ด เช่น ฟังก์ชัน เงื่อนไข ลูป และอื่น ๆ ถ้า indent ไม่ถูกต้อง โปรแกรมก็ไม่สามารถรันได้
- YAML เป็นภาษาที่เราเอาไว้กำหนดโครงสร้างข้อมูล หรือ เขียนคอนฟิกอะไรบางอย่าง เช่น ใช้เขียน docker-compose หรือ kubernetes configuration โดยภาษานี้หาก indent ผิดก็จะไม่สามารถรันได้เช่นกัน
ซึ่งก็จะมีภาษาอื่น ๆ แต่อาจจะไม่ค่อยได้ใช้กันในสายทำเว็บอย่าง Haskell, หรือ Occam ซึ่งภาษาเหล่านี้ก็จะใช้ indent ในการแยกขอบเขตการทำงานของโค้ดเช่นกัน ส่วนที่เหลือก็จะเป็นภาษาที่ไม่ได้บังคับว่าต้องใช้ indent แต่จะใช้ indent เพื่อให้โค้ดอ่านได้ง่ายแทน โดยภาษาที่ใช้หลัก ๆ ก็จะเป็น C, C++, Java, JavaScript, PHP, Ruby, Perl, Go และ Swift
จากบทความนี้เราก็จะเห็นได้ว่าการเขียนโปรแกรมไม่ใช่แค่ เขียนให้โปรแกรมทำงานได้เท่านั้น แต่การเขียนโค้ดให้เป็นระเบียบ อ่านง่าย และเข้าใจง่ายก็สำคัญ โดยเฉพาะเรื่อง Indentation จะทำให้เราเห็นโครงสร้างโค้ดให้ชัดเจน แต่บางภาษาก็จะมีการบังคับใช้เพื่อบอกขอบเขตการทำงานของโค้ดอย่าง Python และ YAML ที่ Indentation มีผลต่อการทำงานของโค้ดโดยตรง แต่ในภาษาส่วนใหญ่จะไม่บังคับใช้ แต่จะใช้เพื่อทำให้โค้ดอ่านง่ายแทนเช่น C++ และ JavaScript ที่แม้จะไม่ใส่ indent โค้ดก็จะยังรันได้ปกติ แต่การมี indent ก็จะช่วยให้โค้ดอ่านง่ายขึ้น ลดความผิดพลาดในการทำงานร่วมกับผู้อื่น และทำให้การบำรุงรักษาโค้ดในอนาคตสะดวกมากขึ้นนั่นเอง