ทีมงานภาษา Go ยอมแพ้ เลิกหาทางแก้ Syntax ส่วนการตรวจความผิดพลาดหลังเรียก API ระบุไม่มีทางไหนได้รับการยอมรับ
Body
Robert Griesemer วิศวกรกูเกิลในทีมงานภาษา Go เขียนบล็อกสรุปถึงความพยายามที่จะสร้าง syntax ใหม่เพื่อจัดการความผิดพลาดหลังเรียก API ภายนอก เนื่องจากภาษา Go นั้นไม่รองรับ exception และความผิดพลาดต่างๆ จากการเรียกฟังก์ชั่นจะถูกรายงานออกมาออกในรูปแบบของการคืนค่าซึ่งโปรแกรมเมอร์ Go ก็มักใช้ตัวแปรชื่อ
แต่รูปแบบการตรวจสอบความผิดพลาดนี้ทำให้โค้ดไม่สวยในหลายกรณี โดยเฉพาะเมื่อมีการเรียกฟังก์ชั่นจำนวนมากๆ ก็จะเกิด
Griesemer ระบุว่าทีมงานรับฟังความเห็นนี้ และหลายปีที่ผ่านมาก็พยายามหาทางแก้ปัญหาเริ่มตั้งแต่ปี 2018 เป็นต้นมา และข้อเสนอหลายอันก็สร้างข้อถกเถียงอย่างกว้างขวาง เช่น ข้อเสนอ
หลังจากถกเถียงกันมาหลายปี Griesemer ระบุว่า syntax การจัดการความผิดพลาดของ Go ใช้งานได้ดี แม้จะทำให้โค้ดยาวไปบ้าง และการนำอิมพลีเมนต์ฟีเจอร์จัดการความผิดพลาดใหม่ก็สร้างความขัดแย้งในกลุ่มผู้ใช้ และฟีเจอร์การจัดการความผิดพลาดนี้ต่างจากฟีเจอร์อื่น เพราะถ้าใส่เข้ามาและมีคนเริ่มใช้ โปรแกรมเมอร์อื่นๆ ก็จะถูกบังคับให้ใช้งานไปพร้อมกัน ขณะที่ฟีเจอร์อื่น เช่น Generics คนที่ไม่สนใจใช้งานก็ยังทำงานได้ต่อไปโดยไม่ต้องใช้ฟีเจอร์นี้ นอกจากนี้ไลบรารีใหม่ๆ ก็ช่วยลดความยืดเยื้อของโค้ดลงได้บ้าง เช่น
จากข้อสรุปทั้งหมด Griesemer ประกาศว่าทีมงาน Go ยังไม่รับข้อเสนอการจัดการความผิดพลาดอีกแล้ว และทีมงานจะปิดข้อเสนอทั้งหมด
ที่มา - Go Blog
lew Wed, 04/06/2025 - 22:44
Continue reading...
Body
Robert Griesemer วิศวกรกูเกิลในทีมงานภาษา Go เขียนบล็อกสรุปถึงความพยายามที่จะสร้าง syntax ใหม่เพื่อจัดการความผิดพลาดหลังเรียก API ภายนอก เนื่องจากภาษา Go นั้นไม่รองรับ exception และความผิดพลาดต่างๆ จากการเรียกฟังก์ชั่นจะถูกรายงานออกมาออกในรูปแบบของการคืนค่าซึ่งโปรแกรมเมอร์ Go ก็มักใช้ตัวแปรชื่อ
err
มารับค่านี้ไว้ และตรวจสอบว่าเกิดความผิดพลาดหรือไม่แต่รูปแบบการตรวจสอบความผิดพลาดนี้ทำให้โค้ดไม่สวยในหลายกรณี โดยเฉพาะเมื่อมีการเรียกฟังก์ชั่นจำนวนมากๆ ก็จะเกิด
if
ที่ใช้ตรวจความผิดพลาดเต็มไปหมดGriesemer ระบุว่าทีมงานรับฟังความเห็นนี้ และหลายปีที่ผ่านมาก็พยายามหาทางแก้ปัญหาเริ่มตั้งแต่ปี 2018 เป็นต้นมา และข้อเสนอหลายอันก็สร้างข้อถกเถียงอย่างกว้างขวาง เช่น ข้อเสนอ
try
เมื่อปี 2019 มีคอมเมนต์เถียงกันกว่า 900 คอมเมนต์ หรือข้อเสนอ ?
เมื่อปี 2024 ที่ยืม syntax มาจากภาษา Rustหลังจากถกเถียงกันมาหลายปี Griesemer ระบุว่า syntax การจัดการความผิดพลาดของ Go ใช้งานได้ดี แม้จะทำให้โค้ดยาวไปบ้าง และการนำอิมพลีเมนต์ฟีเจอร์จัดการความผิดพลาดใหม่ก็สร้างความขัดแย้งในกลุ่มผู้ใช้ และฟีเจอร์การจัดการความผิดพลาดนี้ต่างจากฟีเจอร์อื่น เพราะถ้าใส่เข้ามาและมีคนเริ่มใช้ โปรแกรมเมอร์อื่นๆ ก็จะถูกบังคับให้ใช้งานไปพร้อมกัน ขณะที่ฟีเจอร์อื่น เช่น Generics คนที่ไม่สนใจใช้งานก็ยังทำงานได้ต่อไปโดยไม่ต้องใช้ฟีเจอร์นี้ นอกจากนี้ไลบรารีใหม่ๆ ก็ช่วยลดความยืดเยื้อของโค้ดลงได้บ้าง เช่น
cmp.Or
ก็ใช้จัดการความผิดพลาดได้ทีหลังหลายๆ API callจากข้อสรุปทั้งหมด Griesemer ประกาศว่าทีมงาน Go ยังไม่รับข้อเสนอการจัดการความผิดพลาดอีกแล้ว และทีมงานจะปิดข้อเสนอทั้งหมด
ที่มา - Go Blog
lew Wed, 04/06/2025 - 22:44
Continue reading...