Print Debugging ทำแบบนี้ดีไหมนะ?

Computer Science Aug 7, 2020

การพัฒนาโปรแกรมกับบัคนั้นอาจเรียกได้ว่าเป็นของคู่กัน ไม่ว่าเราจะตั้งใจหรือไม่ก็ตาม บัคก็มีอยู่หลายแบบ หลายประเภท หากเป็นบัคที่เราพิมพ์ผิด Syntax หรือบัคตระกูล Compile-time Error แบบนี้เราอาจจะแก้ไขได้ง่าย เพราะว่า Compiler จะบอกเราถึงจุดที่เราผิด รวมทถึงในบางครั้งก็แนะนำวิธีแก้ให้กับเราเรียบร้อย

Photo by Max Chen / Unsplash

แต่หลายครั้งที่บัคที่เราเจอนั้นมาในรูปแบบของพฤติกรรมของโปรแกรมไม่เป็นไปตามที่เราตั้งใจไว้ ซึ่งหลาย ๆ ครั้งเรามักเรียกว่า Logic Error หรือข้อผิดพลาดที่เกิดจากการที่เราสั่งงานผ่านโค้ดได้ไม่ถูกต้อง (แม้ว่าเราจะคิดว่าถูก)​ ทำให้โปรแกรมมีพฤติกรรมไม่เป็นไปตามที่เราตั้งใจไว้

แน่นอนว่าการแก้ไขบัคที่เป็น Logic Error นั้นยากกว่าการแก้ไขบัคแบบ Syntax Error หรือ Type Error มาก เพราะนอกจาก Compiler จะไม่บอกเราแล้วมามีอะไรผิด หลายครั้งเรามักจะไม่รู้ด้วยว่าจะเริ่มต้นที่ตรงไหนดีที่ทำให้ข้อผิดพลาดนี้เกิดขึ้นมา

Bend man
Photo by Marten Newhall / Unsplash

วิธีหนึ่งที่เรามักใช้กันในการวิเคราะห์ข้อผิดพลาดคือการสังเกต (Observe) ค่าของตัวแปรต่าง ๆ ที่เปลี่ยนแปลงไปในแต่ละช่วงขณะของโปรแกรมว่าเป็นไปตามที่ตั้งใจไว้หรือไม่ ซึ่งเรามักจะทำด้วยการ Print ชื่อตัวแปร + ค่าออกมาในหลาย ๆ จุดของโปรแกรม

ข้อดีที่เห็นได้ชัดของวิธีนี้คือง่ายและค่อนข้างเป็นไปตามสัญชาตญาณของเรา อย่างไรก็ตามวิธีนี้มักจะมาพร้อมกับ

  1. การที่จะต้องจำและมาตามเก็บ Print ต่าง ๆ ที่เราแปะไว้ทั่วทั้งโปรแกรม
  2. หรือถ้าเราไม่ลบเราอาจจะ Comment ไว้เผื่อใช้ในอนาคตซึ่งทำให้โค้ดเรารกโดยไม่จำเป็น
  3. สับสนมากขึ้น หากเรามีโค้ดส่วนที่ใช้งานสำหรับ Log อยู่แล้ว
  4. หากเป็นบางระบบที่ผู้ใช้สามารถเข้าถึง Output จากการ Print ได้ง่าย เช่น Website แล้วเราเผลอ Print Sensitive Data ก็อาจจะเป็นปัญหาได้ หากเราเผลอไม่ได้ลบ Print ที่ใช้เสร็จแล้วทิ้งไป
  5. หากเป็นระบบที่มีนักพัฒนาหลายคนทำงานร่วมกัน (ส่วนใหญ่ในปัจจุบัน)​ แล้วโค้ดส่วนที่เราใช้สำหรับ Print หลุดขึ้นไปบน Version Control ก็อาจทำให้นักพัฒนาคนอื่นสับสนได้ว่าโค้ดส่วนนั้นเป็นส่วนที่จำเป็นต่อโปรแกรมจริง ๆ หรือไม่

ดังนั้นหากเราต้องการใช้วิธีนี้ ก็อาจเหมาะสำหรับการ Track ตัวแปรไม่กี่ตัวในไม่กี่ตำแหน่งเท่านั้น แต่จริง ๆ แล้วเรามีวิธีที่ดีกว่านั้น นั่นคือการใช้งาน Breakpoint คู่กับ Debugger ซึ่ง IDE/Code Editor เจ้าดัง ๆ หลายตัวต่างติดมาให้เรียบร้อยแล้วรอให้เราใช้งาน โดยในหลายครั้ง Debugger เหล่านี้ยังมาพร้อมความสามารถเพิ่มเติมที่จะช่วยให้การแก้ไขโปรแกรมของเราลดเวลา และความ Pain ลงได้อีกด้วย

รู้อย่างนี้แล้วก็อยากเชิญชวนให้ทุก ๆ คนมาหัดใช้ Debugger, Breakpoint เพื่อช่วยเราในการ Debug โปรแกรมกันแทนการใช้ Print statement เพื่อชีวิตที่ดีขึ้นของเรานั่นเอง


📚 Hope you enjoy reading! 📚


Tags

Pittawat Taveekitworachai

A CS student who passionate about web and mobile technology with the belief that technology can enhance people's life.

Great! You've successfully subscribed.
Great! Next, complete checkout for full access.
Welcome back! You've successfully signed in.
Success! Your account is fully activated, you now have access to all content.