ข้อผิดพลาดที่เมกเกอร์ หรือ โปรแกรมเมอร์มักพลาดทำเวลาเขียนโปรแกรม และวิธีการแก้ไข
--
ในฐานะโปรแกรมเมอร์ หรือเมกเกอร์ที่ต้องมีการเขียนโปรแกรมเพื่อสั่งการอุปกรณ์อิเล็กทรอนิกส์ให้ทำงานเป็นไปตามที่เราต้องการ แต่ก็มีบางครั้งที่คุณจะสร้างและพบกับความผิดพลาด ไม่ว่าจะเล็กน้อย หรือจุดใหญ่ ซึ่งอาจมีผลกระทบต่อการทำงานของอุปกรณ์หรือไม่ก็ตาม ซึ่งแม้แต่เมกเกอร์หรือโปรแกรมเมอร์มืออาชีพ ก็ยังทำผิดพลาด แต่คุณจะเป็นเมกเกอร์ที่เก่งขึ้นได้ หากคุณไม่ทำผิดพลาดซ้ำบ่อยๆ
ความผิดพลาดที่เกิดขึ้นอาจมีหลายประเภท ทั้งประเภทที่ไม่ก่อให้เกิดประโยชน์ต่องานที่กำลังทำ หรือบางความผิดพลาดที่ทำให้เราได้เรียนรู้ ค้นพบความสามารถใหม่ๆที่เราไม่เคยรู้มาก่อน
ดังนั้น ในบทความนี้ เราจะลองมาพูดถึงสิ่งที่คุณไม่ควรทำเมื่อคุณสร้างสรรค์ชิ้นงานหรือเขียนโปรแกรม และวิธีการแก้ไข เพื่อพัฒนาศักยภาพการสร้างสรรค์ชิ้นงานและโปรแกรมของคุณ
อย่า Copy-Paste โดยที่ไม่เข้าใจ
เมกเกอร์มือใหม่หรือโปรแกรมเมอร์ที่กำลังเจอปัญหา ซึ่งโดยส่วนมากจะนำปัญหาที่พวกเขาพบไปค้นหาใน Google ซึ่งเมื่อพบกับคำตอบหรือวิธีแก้ปัญหาที่ได้ พวกเขาก็จะทำการ Copy-Paste ลงในงานของตัวเอง เพื่อแก้ไขปัญหาที่เกิดขึ้น โดยหากโชคดีหน่อย ผลลัพธ์ที่ได้อาจทำให้พวกเขาหลุดจากปัญหาที่เกิดขึ้น แต่หากโชคร้าย พวกเขาอาจใช้คำตอบที่หามาใน Google แก้ไขไม่ได้ และอาจพบกับปัญหาใหม่ที่เพิ่มขึ้น ซึ่งในความเป็นจริงแล้ว วิธีนี้ถือเป็นแนวทางที่ดีในการ สร้าง/แก้ไข/เรียนรู้ การเขียนโปรแกรม หากคุณเข้าใจในสิ่งที่คุณ Copy มา และ Paste ลงไป
ซึ่งในความเป็นจริงแล้ว การอ่านเพื่อทำความเข้าใจและเขียนโปรแกรมด้วยตัวคุณเองนั้นถือเป็นช่องทางในการเรียนรู้ที่มีประสิทธิภาพมากที่สุด การได้สร้าง/เขียนโปรแกรมด้วนตัวคุณเองจะทำให้สมองของคุณได้ทำความเข้าใจกับสิ่งที่คุณได้เขียนลงไปในโปรแกรม และทำให้คุณได้จำและเข้าใจในสิ่งที่คุณได้ทำลงไป ซึ่งดีกว่าการ Copy-Paste คำตอบจากในอินเตอร์เน็ตมาใช้งาน โดยที่ไม่เข้าใจเลยว่า ปัญหาและวิธีการแก้ไขปัญหาที่แท้จริงคืออะไร
ยกตัวอย่างเช่น คุณเจอโค้ดบรรทัดนี้อยู่ในเว็บไซต์หนึ่ง
if ((WiFi.status() != WL_CONNECTED) && (current_time – previous_time >=delay)) {
Serial.print(millis());
WiFi.disconnect();
WiFi.reconnect();
โค้ดโปรแกรมในส่วนนี้ทำหน้าที่ในการตรวจสอบว่าอุปกรณ์ของเราเชื่อมต่อกับ WiFi อยู่หรือยัง ซึ่งหากคุณไม่เข้าใจว่า ตัวไมโครคอนโทรลเลอร์ใช้คำสั่งใดในการตรวจสอบว่า ตัวบอร์ดเชื่อมต่อกับ WiFi อยู่หรือไม่ แล้วคุณจะเข้าใจหลักการทำงานของโปรแกรมบรรทัดนี้ได้อย่างไร
ซึ่งหากคุณรู้ว่า ส่วนต่างๆของโค้ดโปรแกรมชุดนี้ทำงานอย่างไร มันจะช่วยให้คุณโดดเด่นกว่าคนอื่นๆด้วย
อย่าเขียนโปรแกรมโดยไม่มีรูปแบบที่ชัดเจน
ในฐานะเมกเกอร์หรือโปรแกรมเมอร์ ในบางครั้ง คุณจำเป็นที่จะต้องมีการทำงานร่วมผู้อื่น ซึ่งสิ่งที่สำคัญในการทำงานเป็นทีมนั้นคือต้องอาศัยความเข้าใจร่วมกัน หากคุณเขียนโปรแกรมด้วยรูปแบบที่ไม่ชัดเจน อยากเขียนอย่างไรก็ได้ ไม่มีรูปแบบหรือลักษณะการเขียนที่ชัดเจน สิ่งนี้จะทำให้เกิดปัญหาขึ้นกับทีมของคุณอย่างแน่นอน เพราะอย่าลืมว่า ทุกคนในทีมของคุณไม่ได้มานั่งดูคุณค่อยๆเขียนโค้ดทีละบรรทัดไปพร้อมกับคุณ พวกเขาอาจได้รับหน้าที่เข้ามาเป็นผู้พัฒนาโดยใช้โค้ดโปรแกรมของคุณต่อ ดังนั้น คุณควรจำไว้เลยว่า คุณไม่ได้เขียนโค้ดให้ตัวคุณเองเท่านั้น
ลักษณะโปรแกรมหรือโค้ดที่ดีควรที่จะมีการจัดรูปแบบให้โค้ดของคุณดูสวยงาม เข้าใจง่าย เป็นสัดส่วน อาทิ หากคุณเขียนโปรแกรมโดยใช้ Arduino IDE คุณสามารถกด Ctrl+T เพื่อทำการจัดระเบียบโค้ดของคุณโดยอัตโนมัติ หรืออาจใช้เครื่องมือที่ช่วยจัดระเบียบโค้ดของคุณตามอินเตอร์เน็ต โดยอาจใช้คีย์เวิร์ดในการค้นหาว่า “Code Beautify” หรือ “Code Prettier”
การเลือกใช้ตัวแปรที่ไม่เหมาะสม ตัวแปรที่ยาวเกินไป หรือตัวแปรที่ไม่สื่อถึงความหมายใดๆของตัวแปรนั้นๆจะทำให้คุณสับสนเมื่อต้องทำความเข้าใจกับโค้ดโปรแกรมได้
นอกจากนี้ การเลือกใช้ชื่อตัวแปรและการใส่คอมเมนต์เพื่ออธิบายการทำงานส่วนต่างๆของโค้ดโปรแกรมจะช่วยให้โค้ดของคุณสามารถเข้าใจได้ง่ายเมื่อผู้อื่นมาใช้งาน หรือแม้กระทั่งตัวคุณเองที่เมื่อผ่านเวลามาซักพัก คุณอาจจะไม่เข้าใจสิ่งที่คุณเคยเขียนไว้ก็เป็นไปได้
อย่าลืม Debugging
การเขียนโปรแกรมโดยเฉพาะเพื่อควบคุมอุปกรณ์อิเล็กทรอนิกส์นั้น สิ่งที่เกิดขึ้นที่เราเขียนโปรแกรมไม่ได้มีเพียงส่วนของฮาร์ดแวร์ที่จะทำตามคำสั่งของเราเท่านั้น ยังมีส่วนของซอฟต์แวร์หรือตัวโปรแกรมที่ทำงานอยู่เบื้องหลังด้วย และหากมีอะไรเกิดขึ้น สิ่งที่เราจะมองเห็นได้ทันทีคือ การทำงานของฮาร์ดแวร์ที่อาจจะไม่ทำงาน หรือทำงานผิดพลาด ซึ่งในการแก้ไข เราก็ต้องกลับไปดูที่ซอฟต์แวร์หรือโค้ดโปรแกรมของเราว่าผิดพลาดที่ตรงจุดไหน ซึ่ง Debugging จะเข้ามามีบทบามสำคัญในจุดนี้ เพราะจะช่วยในการลดเวลาในการแก้ไขปัญหา เพราะเราสามารถที่จะดูการทำงานของโปรแกรมในแต่ละจุดอย่างเรียล์ไทม์ โดยที่ไม่ต้องไปนั่งงมโค้ดทั้งโปรแกรมเพื่อหาจุดผิดพลาดและแก้ไข อาทิ หากเป็นการเขียนโปรแกรมบน Arduino IDE เครื่องมือ debugging ที่ง่ายที่สุดที่หลายๆคนใช้กันก็น่าจะเป็น Serial Monitor เป็นต้น
หรือหากเป็น IDE หรือเครื่องมือการเขียนโปรแกรมที่ได้รับการพัฒนามาโดยเฉพาะ ก็อาจที่จะมีเครื่องมือที่จะช่วยในการ debugging โค้ดโปรแกรมของเราโดยอัตโนมัติด้วย
อย่ากลัวที่จะให้คนอื่น Review โค้ดโปรแกรมของเรา
การรีวิวหรือการให้ผู้อื่นเข้ามาตรวจสอบโค้ดโปรแกรมของเรา ไม่ว่าจะเป็นเพื่อนร่วมงานหรือผู้ที่มีความเชี่ยวชาญในด้านนี้มากกว่าเรา อาทิ การอนุญาติให้ผู้อื่น Pull Request โค้ดโปรเจ็กต์ของเราใน Github โดยเมื่อมีคำแนะนำ เราควรยอมรับอย่างอ่อนน้อมถ่อมตนและนำมาปรับปรุงและแก้ไขโค้ดโปรแกรมของเรา พร้อมทั้งอย่ากลัวที่จะถามคำถามและทำความเข้าใจสิ่งที่เราต้องการทราบด้วย
ประโยชน์ของการ Review คือ
- ตรวจสอบ Bug ที่อาจเกิดขึ้นกับผู้อื่น
- มั่นใจว่าโค้ดโปรแกรมของคุณอ่านทำความเข้าใจด้วยผู้อื่นรู้เรื่อง และปรับปรุงแก้ไขได้
- แบ่งปันความรู้จากโค้ดโปรแกรมที่เราเขียนขึ้นมาให้กับผู้อื่น
อย่าเขียนโปรแกรมของคุณให้ซับซ้อนจนเกินไป
ผู้ที่มีประสบการณ์ส่วนมากมักจะแนะนำให้มือใหม่ เรียนรู้และเขียนโค้ดที่สะอาด มีรูปแบบที่ชัดเจน
แต่ถ้าคุณพยายามที่จะจัดระเบียบโค้ดโปรแกรมของคุณ ใช้ทุกรูปแบบที่เคยเห็นหรือเคยได้ยินว่าดี ได้รับความนิยม มาใช้ในโค้ดโปรแกรมของคุณ จะกลายเป็นว่าโค้ดโปรแกรมของคุณนั้นจะซับซ้อนเกินกว่าควรที่จะเป็น!
ระหว่างโค้ดโปรแกรมที่ผ่านการ Optimize แล้วกับโค้ดโปรแกรมที่อ่านได้ เข้าใจง่าย หลายๆคนที่เคยเขียนโปรแกรมก็มักที่จะเลือกโค้ดโปรแกรมที่อ่านได้ เข้าใจง่าย มาก กว่าโค้ดโปรแกรมที่ผ่านการ Optimize แล้ว เพราะโค้ดที่ผ่านการ Optimize แล้ว มันจะมีการตัดส่วนที่ไม่จำเป็นหรือมีผลต่อการทำงานของโปรแกรมออก ซึ่งอาจรวมถึง Debugger หรือคำอธิบาย คอมเมนต์ต่างๆด้วย ซึ่งนั่นเป็นสาเหตุให้โค้ดโปรแกรมประเภทนี้สามารถทำความเข้าใจได้ยาก ปรับปรุงหรือแก้ไขได้ยาก
สรุปจากทั้งหมด เราจะได้ “5 อย่า” ที่คุณไม่ควรทำ ดังนี้
- อย่า Copy-Paste โดยที่ไม่เข้าใจ
- อย่าเขียนโปรแกรมโดยไม่มีรูปแบบที่ชัดเจน
- อย่าลืม Debugging
- อย่ากลัวที่จะให้คนอื่น Review โค้ดโปรแกรมของเรา
- อย่าเขียนโปรแกรมของคุณให้ซับซ้อนจนเกินไป
จากที่กล่าวมาทั้งหมดนี้ หากคุณในฐานะเมกเกอร์หรือโปรแกรมเมอร์สามารถทำได้ ความรู้ เทคนิคความสามารถของคุณในการเขียนโปรแกรมจะสามารถพัฒนาได้อย่างรวดเร็วอย่างแน่นอน!