ฉันควรทำเครื่องหมายประเภทในโปรแกรม C และ C ++ อย่างไร


12

ในคำตอบของฉันฉันใช้_tเมื่อสิ้นสุดประเภทซึ่งจบลงอย่างดีที่สุดแย้ง นี่คือแนวทางปฏิบัติที่ฉันใช้ในโครงการปัจจุบันของฉัน

typedef struct {
    int x;
    int y;
} point_t;

ครั้งนี้มีวัตถุประสงค์เพื่อให้สอดคล้องกับประเภท C จากstddef.hชอบหรือsize_t ptrdiff_tอย่างไรก็ตามตามความคิดเห็นบางอย่างในคำถามของฉัน_tpostfix ดูเหมือนจะถูกสงวนไว้สำหรับ POSIX ฉันควรใช้อะไรแทน_t? หรือฉันควรใช้_tต่อไปหรือไม่?

คำถามนี้สำหรับทั้ง C และ C ++ หากภาษาเหล่านี้มีการประชุมที่แตกต่างกันอย่าลังเลที่จะตอบคำถาม


2
หนึ่งในหลักการทั่วไปคือการมีชื่อคลาสที่ LookLikeThis ณ จุดนี้คุณไม่จำเป็นต้องมีคำต่อท้าย (นี่เป็นเรื่องปกติมากสำหรับ Java, .net ฯลฯ แต่มันก็ใช้งานได้ใน C ++ เช่นกัน)
cHao

1
ในที่สุดนี่คือรูปแบบของสัญกรณ์ฮังการี และการสนทนานั้นไม่มีที่สิ้นสุด ฉันตีหนึ่งแล้วและแก้ปัญหาด้วย cHao ทำไม? เพราะฉันใช้สัญลักษณ์ฮังการีทุกอย่างประมาณ 4 ปีจากนั้นจึงตัดสินใจทำโครงการโดยไม่ใช้มันและไม่พลาดเลย และไม่ต้องเสียเวลากับมัน ดังนั้นฉันจึงทิ้งมันไปอย่างสมบูรณ์ตั้งแต่เห็นได้ชัดว่าไม่มีค่าเลยสำหรับฉัน และฉันไม่เคยมองย้อนกลับไป
stijn

1
ดูคำถามนี้สำหรับตัวระบุที่สงวนไว้ (รวมถึง_t) stackoverflow.com/a/228797/14065
Martin York

คำตอบ:


16

ไม่มีมติในชุมชน C และ C ++ เกี่ยวกับประเภทการตั้งชื่อ

แม้ว่า_tส่วนต่อท้ายจะถูกสงวนไว้โดย POSIXบางคนจะสนับสนุนการใช้_tคำต่อท้ายสำหรับประเภทของคุณเองในขณะที่คนอื่น ๆ จะยืนยันอย่างเท่าเทียมกันว่าคุณไม่ควรล่อลวงชะตากรรมด้วยการเสี่ยงชื่อซ้ำด้วย POSIX

ทางเลือกการตั้งชื่อขอแนะนำให้ใช้คำนำหน้าชนิดเช่นหรือCT


16

ฉันพบคำต่อท้ายค่อนข้างน่าเกลียดและหลีกเลี่ยง_tฯลฯ ทางเลือกที่ดีคือการใช้อักษรตัวใหญ่เพื่อเริ่มพิมพ์ชื่อดังนั้นPointในตัวอย่างของคุณด้านบน


3
และฉันคิดว่ามันดีที่จะมีสไตล์ที่แตกต่างจากประเภท C มาตรฐานดังนั้นการอ่านโค้ดคุณสามารถค้นหาสิ่งที่มาจากโปรแกรมไคลเอนต์และ API คืออะไร
Nikko

1
ด้วยเทคนิคที่ฉันชอบ ประเภทมีอักษรตัวพิมพ์ใหญ่เริ่มต้น ตัวระบุอื่น ๆ ทั้งหมดไม่ใช่ประเภทและมองเห็นได้ง่าย
Martin York

ฉันมักจะคิดว่ามันดูน่าเกลียดเช่นกัน ดีที่เห็นคนอื่นเห็นด้วยกับฉัน
syb0rg

ฉันใช้ PascalCase สำหรับประเภทตัวชี้เท่านั้น (เนื่องจากภาษาอย่าง C # และ Java ที่ PascalCase หมายถึงคลาสเช่นการอ้างอิงถึงข้อมูล) แต่ฉันได้มาจากที่ที่คุณมา
yyny

1

มันขึ้นอยู่กับคุณ. หากไม่มีความขัดแย้งกับคำพูดที่สงวนไว้คุณก็พร้อมที่จะไป อย่างไรก็ตามพิจารณาสถานการณ์ที่คุณทำงานใน บริษัท และหลายคนกำลังเข้าถึงฐานรหัสเดียวกันและรหัสของคุณจะได้รับจากบุคคลที่ไม่ทราบถึงนิสัยของคุณเขา / เธอสามารถสันนิษฐานได้ว่าเป็นประเภทที่สงวนไว้โดยเฉพาะอย่างยิ่ง คุณเขียนอะไรบางอย่างเช่น point_t ดังนั้นทำให้ง่ายขึ้นเช่นจุดง่ายกว่า point_t และถ้าคุณต้องการที่จะผนวกสิ่งที่มันผนวกคุณชื่อชื่อย่อ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.