ชุมชน Go แตกแยกเรื่องข้อเสนอการจัดการข้อผิดพลาดใหม่ที่ใช้เครื่องหมาย '?'

BigGo Editorial Team
ชุมชน Go แตกแยกเรื่องข้อเสนอการจัดการข้อผิดพลาดใหม่ที่ใช้เครื่องหมาย '?'

ชุมชนภาษาโปรแกรมมิ่ง Go กำลังถกเถียงกันอย่างดุเดือดเกี่ยวกับข้อเสนอใหม่ในการลดความซับซ้อนของการจัดการข้อผิดพลาดโดยใช้เครื่องหมาย '?' ซึ่งสะท้อนให้เห็นถึงความแตกแยกที่เพิ่มขึ้นระหว่างนักพัฒนาที่มีประสบการณ์และผู้เริ่มต้นใช้ภาษานี้

การจัดการข้อผิดพลาดแบบดั้งเดิมเทียบกับแบบสมัยใหม่

การอภิปรายเผยให้เห็นถึงความแตกแยกที่สำคัญในชุมชน Go เกี่ยวกับวิธีการจัดการข้อผิดพลาด นักพัฒนา Go ที่ใช้งานมานานคุ้นเคยและชื่นชอบรูปแบบ if err != nil ที่ชัดเจน ในขณะที่นักพัฒนาที่มาจากภาษาอื่นมักจะรู้สึกว่ามันยุ่งยากและซ้ำซาก ดังที่สมาชิกชุมชนคนหนึ่งกล่าวว่า:

หากคุณคุ้นเคยกับ exceptions และภาษาที่มีเครื่องหมาย '?' การพิมพ์ if err != nil ตลอดเวลาอาจเป็นเรื่องที่ทรมาน แต่เมื่อคุณใช้ภาษานี้ไปสักพัก คุณจะเริ่มไม่ชอบระบบที่ซับซ้อนที่ภาษาอื่นๆ ใช้ในการปกปิดข้อผิดพลาด

ผลกระทบของข้อเสนอและความกังวลของชุมชน

การเปลี่ยนแปลงที่เสนอจะส่งผลกระทบต่อประมาณ 1.98% ของคำสั่งทั้งหมดใน standard library ของ Go ซึ่งถือเป็นการเปลี่ยนแปลงที่สำคัญในวิธีการเขียนและอ่านโค้ด Go สมาชิกชุมชนได้แสดงความกังวลหลายประการเกี่ยวกับข้อเสนอนี้ รวมถึงความสับสนที่อาจเกิดขึ้นกับผู้เริ่มต้น ความเสี่ยงที่จะพลาดการจัดการข้อผิดพลาดเนื่องจากสัญลักษณ์ '?' ที่มองเห็นได้ยาก และคำถามว่าการเปลี่ยนแปลงพื้นฐานเช่นนี้มีความจำเป็นหรือไม่เมื่อพิจารณาถึงเครื่องมือพัฒนาสมัยใหม่

สถิติสำคัญจากข้อเสนอ:

  • มีการวิเคราะห์คำสั่งทั้งหมด 723,292 คำสั่งในไลบรารีมาตรฐาน
  • สามารถแปลงเป็นไวยากรณ์ใหม่ได้ 14,304 คำสั่ง
  • 1.98% ของคำสั่งทั้งหมดจะได้รับการเปลี่ยนแปลง
  • 2,825 คำสั่ง (0.39%) จะใช้เครื่องหมาย ? โดยไม่มีบล็อกตัวเลือก

บริบทการพัฒนาสมัยใหม่

น่าสนใจที่นักพัฒนาบางคนชี้ให้เห็นว่า ด้วยการมาถึงของเครื่องมือพัฒนาที่ขับเคลื่อนด้วย AI และ copilots ภาระในการเขียนโค้ดที่เป็นแบบแผนได้ลดลงอย่างมาก ความก้าวหน้าทางเทคโนโลยีนี้ทำให้หลายคนตั้งคำถามว่าการเปลี่ยนแปลงไวยากรณ์เพื่อลดโค้ดที่ซ้ำซากยังมีความสำคัญเท่ากับเมื่อไม่กี่ปีที่ผ่านมาหรือไม่

ความน่าเชื่อถือทางเทคนิค

ข้อเสนอนี้มีน้ำหนักมากในชุมชน เนื่องจากมาจาก Ian Lance Taylor ซึ่งเป็นบุคคลสำคัญในการพัฒนา Go และมีบทบาทสำคัญในการนำ generics มาสู่ภาษานี้ พื้นฐานนี้ทำให้นักพัฒนาหลายคนพิจารณาข้อเสนอนี้อย่างจริงจัง แม้จะมีข้อสงสัยในตอนแรก

การถกเถียงยังคงดำเนินต่อไป โดยชุมชนกำลังชั่งน้ำหนักระหว่างประโยชน์ของการลดโค้ดที่ซ้ำซากกับหลักการของ Go ในเรื่องความเรียบง่ายและความชัดเจนในการจัดการข้อผิดพลาด

อ้างอิง: discussion: spec: reduce error handling boilerplate using ? #71460