บั๊ก คือ อะไร?
Introduction 🙋♂️
ในโลกของซอฟท์แวร์ ไม่ว่าจะโปรแกรมเมอร์มือใหม่ มือเก่า มือเก๋า หรือแม้แต่สุดยอดโปรแกรมเมอร์ ต่างก็เคยสร้างข้อผิดพลาดทางโปรแกรมกันทั้งนั้น เราๆเองก็มักจะเรียกข้อผิดพลาดเหล่านั้นว่า "Bug(บั๊ก)".
Common types of bugs 🐞
โดยทั่วไปแล้ว เรามักจะแบ่งชนิดของบั๊กเป็นกลุ่มใหญ่ๆ 3 กลุ่มหลักๆ
- Syntax errors
- Logic errors
- 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/
อยากให้ทุกคนสนุกกับการเขียนโค้ด
Be lazy & Happy Coding 🤤🖥🤗
Top comments (0)