Common types of bugs - บั๊กทั่วๆไป มีอะไรบ้างหนอ?
Tags: programming, beginners, bug
Published: 2020-07-06 16:50:30

> **บั๊ก คือ อะไร?** 

##Introduction 🙋‍♂️
ในโลกของซอฟท์แวร์ ไม่ว่าจะโปรแกรมเมอร์มือใหม่ มือเก่า มือเก๋า หรือแม้แต่สุดยอดโปรแกรมเมอร์ ต่างก็เคยสร้างข้อผิดพลาดทางโปรแกรมกันทั้งนั้น เราๆเองก็มักจะเรียกข้อผิดพลาดเหล่านั้นว่า "Bug(บั๊ก)".

##Common types of bugs 🐞
โดยทั่วไปแล้ว เรามักจะแบ่งชนิดของบั๊กเป็นกลุ่มใหญ่ๆ 3 กลุ่มหลักๆ
1. Syntax errors
2. Logic errors 
3. Runtime errors

##Syntax errors 🙊
น้องเล็ก... Syntax errors ถือว่าเป็นน้องเล็กของวงการละกัน เพราะเค้าจะง่ายในการตามหาอย่างเช่น การสะกดชื่อตัวแปร, ชื่อฟังก์ชั่น, ชื่อคลาสผิด หรือการใช้สัญลักษณ์พิเศษหรืออาจเผลอไปเอา Reserved word(คำสงวน) มาใช้เป็นชื่อตัวแปร หรือคลาส โดยส่วนใหญ่แล้ว Compiler หรือ IDE ที่เหล่านักพัฒนาใช้ในปัจจุบัน มักจะช่วยตรวจสอบ Syntax errors ได้ดีพอสมควร อย่างเช่น แจ้งให้เราทราบว่า เราเรียกใช้ตัวแปรที่ยังไม่ได้ประกาศ ฟังก์ชั่นนี้ยังไม่ได้สร้างนะ หรือถึงขั้นแนะนำได้ว่า เราอยากจะเรียกใช้ตัวแปรหรือฟังก์ชั่นนี้ใช่หรือไม่ อาจมีทั้งไฮไลท์หรือ pop-up menu ให้เราใช้อย่างเสร็จสรรพ ทำให้เราตามหาเจ้าน้องเล็กได้ง่ายขึ้นนั่นเอง

##Logic errors 🙉
พี่คนกลาง... Logic errors นี่เก๋าขึ้นมาหน่อย เพราะส่วนใหญ่มักรอดจากการเป็นน้องเล็กมาแล้ว โค้ดตรงนี้ก็พิมพ์ถูกนี่นา รันโปรแกรมก็ได้ปกติ แต่ทำไมค่าตรงนี้มันคำนวณคำตอบมาผิดซะงั้น? เพราะปัญหาของ Logic errors เครื่องมือส่วนใหญ่ที่เราใช้เขียนโปรแกรมมันแทบจะหาไม่เจอเลยก็ว่าได้ แต่ยังโชคดีที่แทบจะ 100% ของ Logic errors นั้น เราสามารถที่จะหามันเจอได้จากโค้ดที่เราเขียนขึ้นมาเองนี่แหละ เพราะเค้าเกิดจากการทำงานที่ไม่ตรงกับความต้องการของเรานั่นเอง อย่างเช่น เราต้องการที่จะให้คำนวณส่วนลด 10% ให้ลูกค้าเมื่อมีการซื้อสินค้าครบ 1,000 บาท แต่เมื่อลูกค้าซื้อครบ 1,000 แล้วโปรแกรมกลับไม่คำนวณส่วนลดให้ซะงั้น ตรงนี้เอง เราจะสามารถ "เดา" หรือ "คาดการ" ได้ว่า มันเกิดขึ้นที่ตัวแปร, ฟังก์ชั่นหรือส่วนไหนของโปรแกรมที่เราเขียน เราค่อยเข้าไปแก้ไขและทดสอบในส่วนนั้นๆของโปรแกรมได้

##Runtime errors 🙈
พี่ใหญ่... Runtime errors คนนี้เค้าเก๋าสุด เข้มสุดเลยก็ว่าได้บางที นักพัฒนาหลายๆคนอาจเคยเจอปัญหาแบบ เอ๊ะ รันใน iPhone ก็ได้ปกตินี่หว่า ทำไมรันใน iPad เปิดหน้านี้ทีไร Crash หรือเด้งออกทุกที หรือบางคนอาจเคยได้ยินคำว่า 
> "It works on my machine" 

ก็มันรันบนเครื่องฉันได้ปกติหนิ ทำไมไปรันบนเครื่องอื่นแล้วมันเจ๊ง มันเจ๊งได้ไงฟร๊ะ นั่นจึงเป็นสาเหตุว่าทำไม พี่ใหญ่เขาถึงเก๋าสุดเข้มสุด เพราะเหล่านักพัฒนาอาจต้องมองกว้างขึ้น ลึกขึ้นหรือลงรายละเอียดเข้าไปถึงหลายๆอย่าง เช่นสภาพแวดล้อมของระบบที่ใช้รันโปรแกรม ขนาดของเมมโมรี, เวอร์ชั่นของระบบปฏิบัติการ, ความเสถียรของอินเตอร์เน็ต, ฮาร์ดแวร์ของเครื่องที่ใช้และอื่นๆอีกมากมาย หลายต่อหลายครั้งในเหตุการณ์ของ Runtime errors จึงต้องอาศัยประสบการณ์ในการแก้ปัญหาพอสมควร ถึงจะหาสาเหตุที่มาของปัญหาและจัดการกับมันได้ในที่สุด

##Conclusion 🌾
แม้ในบางครั้ง เราจะจัดการกับน้องเล็ก(Syntax errors) พี่คนกลาง(Logic errors) ได้อย่างอยู่หมัด แต่มันไม่ง่ายเลยจริงๆที่จะกล้าพูดว่าฉันจัดการพี่ใหญ่(Runtime errors) ได้ 100%!! เรียบร้อยแล้ว
ซึ่งทางที่ดีที่สุดสำหรับนักพัฒนาอย่างเราๆแล้ว ก็ควรสละเวลาอันมีค่าไปเขียน "Test" ดีกว่าเอาเวลามาไล่หา "Bug" เพื่อให้เกิดคำว่า error-free มีอยู่จริง ต่อให้ไม่ 100% ก็ขอให้เป็น 99% ก็ยังดีครับ 

> ที่ใดมี "โค้ด" ที่นั่นมี "บั๊ก"

___
ก่อนจากกัน...ฝากกดไลท์ กดแชร์เพจโปรแกรมมิ่งสนุกๆไว้ให้ติดตามผ่านทาง Facebook ไว้เรียนรู้ไปด้วยกันครับ
[https://www.facebook.com/igroomgrimonthefloor/](https://www.facebook.com/igroomgrimonthefloor/)

อยากให้ทุกคนสนุกกับการเขียนโค้ด
Be lazy & Happy Coding 🤤🖥🤗