เช้านี้เจอคำถามที่น่าสนใจจาก StackExchange
เรื่อง Result object vs throwing exceptions
ว่าเราจะเลือกแนวทางใด
สำหรับการส่งผลการทำงานกลับมาจาก function/method/module
ระหว่างส่งผลการทำงานเป็น result object ทั้ง success และ failure
หรือทำการโยน exception กลับมาถ้าการทำงาน failure
ซึ่งมีคำตอบที่น่าสนใจ น่าคิด
ยกตัวอย่างเช่น
ให้ทำการส่งเป็น result object กลับมา สำหรับกรณีต่าง ๆ
ออกมาทั้ง success และ failure
เช่น user valid, password invalid และ user not found เป็นต้น
และให้โยน error และ exception ออกมา
ในกรณีที่ไม่คาดหวังกลับมา
เพื่อบอกหรือแจ้งให้ผู้เรียกรู้
เช่น database connection error, network problem เป็นต้น
ดังนั้นควรทำการพูดคุยและวางแผนในกรณีต่าง ๆ
ว่าจะรับมือและจัดการอย่างไร
ก่อนที่จะลงมือพัฒนาหรือสร้างขึ้นมา
มันเป็นตัวชี้วัดว่า เรามีความเป็นมืออาชีพมากพอหรือไม่
อีกมุมมองคือ ตามแต่ละวัฒนธรรมของภาษาโปรแกรมและเทคโนโลยีนั้น ๆ
บางภาษาไม่มีการโยน exception ออกมา
ดังนั้นให้ return error มาทาง return object เช่นภาษา Go
บางภาษาทำการส่งค่ากลับมาผ่าน Out parameter เช่นภาษา C#
บางภาษาทำการโยน error กลับมาเลยเช่น Java
บางภาษาแยก flow การทำงานของ error ออกมาได้เลย เช่น Python
ในฐานะนักพัฒนานั้น คุณเลือกอย่างไร ?