4 คะแนน โดย GN⁺ 2023-10-10 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • ผู้เขียนพูดถึงสไตล์การเขียนโค้ด C ส่วนตัวของตนจนถึงปลายปี 2023 โดยเน้นการเปลี่ยนแปลงสำคัญและจุดที่ปรับปรุงขึ้นในเทคนิคต่าง ๆ
  • ผู้เขียนเริ่มใช้ชื่อสั้นสำหรับ primitive type และพบว่าวิธีนี้ช่วยเพิ่มความชัดเจนและทำให้การรีวิวโค้ดสนุกขึ้น
  • ผู้เขียนยกตัวอย่างกฎการตั้งชื่อแบบใหม่สำหรับ primitive type เช่น typedef uint8_t u8; และ typedef char16_t c16;
  • ผู้เขียนเลือกใช้ตัวพิมพ์เล็กสำหรับแมโครที่ดูเหมือนฟังก์ชัน เพราะอ่านง่ายและไม่มีปัญหา namespace แบบเดียวกับนิยามแมโครชนิดอื่น
  • ผู้เขียนเลิกใช้ const เพราะมองว่าไม่มีบทบาทที่แท้จริงต่อการเพิ่มประสิทธิภาพ และไม่สามารถช่วยจับข้อผิดพลาดได้ เขาเชื่อว่าการใส่มันไว้ใน C เป็นความผิดพลาด
  • ผู้เขียนปฏิเสธสตริงแบบ null-terminated และหันมายอมรับชนิดสตริงพื้นฐานแทน โดยพบว่าวิธีนี้ทำงานได้มีประสิทธิผลมากกว่า
  • ผู้เขียนชอบคืนค่าเป็น struct มากกว่าการใช้ out parameter ซึ่งช่วยให้สามารถคืนค่าหลายค่าได้อย่างมีประสิทธิภาพ
  • ผู้เขียนเลิกพึ่ง initializer และชอบกำหนดค่าเริ่มต้นด้วยการ assignment แทน ยกเว้น zero initializer แบบดั้งเดิม
  • ผู้เขียนชอบ __attribute มากกว่า __attribute__ โดยมองว่าแบบหลังดูเกินจำเป็นและฟุ่มเฟือย
  • สำหรับการเขียนโปรแกรมระบบบน Win32 ผู้เขียนแนะนำให้เขียน prototype ด้วยตนเองโดยใช้ชนิดข้อมูลที่กำหนดเอง เพื่อลดเวลา build, จัดระเบียบ namespace และเชื่อมต่อกับโปรแกรมได้อย่างสะอาดกว่าเดิม
  • ผู้เขียนยกตัวอย่างสไตล์การเขียนโค้ดจากโปรแกรมขนาดเล็กอย่าง wordhist.c และ asmint.c

1 ความคิดเห็น

 
GN⁺ 2023-10-10
ความคิดเห็นบน Hacker News
  • บทความเกี่ยวกับสไตล์การเขียนโค้ด C แบบส่วนตัวของผู้เขียน ณ ช่วงปลายปี 2023
  • ผู้แสดงความเห็นบางคนไม่เห็นด้วยกับวิธีที่ผู้เขียนนิยาม type ของตนเอง และโต้แย้งว่าสิ่งนี้อาจทำให้ผู้ที่คุ้นเคยกับ type ของ C อยู่แล้วสับสน
  • มีข้อถกเถียงเรื่องการใช้ "ALL_CAPS" กับค่าคงที่ โดยบางคนมองว่าสิ่งนี้ควรถูกสงวนไว้สำหรับ preprocessor macro
  • มีคำวิจารณ์ต่อการที่ผู้เขียนใช้ signed size โดยบางความเห็นระบุว่า unsigned size เสี่ยงต่อข้อบกพร่องน้อยกว่า
  • การที่ผู้เขียนออกนอกขนบเดิม เช่น ใช้ u8 หรือ i32 แทนมาตรฐานอย่าง uint8_t หรือ int32_t ดูเหมือนจะทำให้ผู้อื่นสับสนได้
  • ผู้แสดงความเห็นบางคนมองว่าแนวทางของผู้เขียนดูเน้นความชอบส่วนตัวมากกว่าการทำให้โค้ด C เป็นสิ่งที่ทุกคนเข้ามาทำงานด้วยได้ง่าย
  • มีการตั้งคำถามต่อการที่ผู้เขียนใช้ boolean 32 บิต โดยบางคนมองว่านี่เป็นการสิ้นเปลืองหน่วยความจำโดยไม่มีข้อดีที่ชัดเจน
  • มีความกังวลต่อสมมติฐานของผู้เขียนที่ว่า float เป็น 32 บิต และ double เป็น 64 บิต ซึ่งดูอาจก่อปัญหาได้
  • แนวคิดเรื่อง "สไตล์ส่วนตัว" ในการเขียนโค้ดดูอาจเป็นปัญหาได้ เพราะท้ายที่สุดแล้วการเขียนโปรแกรมเป็นกิจกรรมทางสังคม แม้แต่ในโปรเจกต์งานอดิเรกก็เช่นกัน
  • ผู้แสดงความเห็นบางคนไม่เห็นด้วยกับการที่ผู้เขียนชอบใช้ structs มากกว่า out-parameters โดยมองว่าสิ่งนี้ทำให้การประกอบฟังก์ชันเข้าด้วยกันยากขึ้นและทำให้จำนวน type เพิ่มขึ้น
  • บทความนี้จุดประกายการถกเถียงเกี่ยวกับสไตล์และแนวทางการเขียนโค้ดที่หลากหลาย พร้อมตอกย้ำถึงความหลากหลายของความคิดเห็นในชุมชนโปรแกรมมิง