ไปที่หลักการตั้งชื่อสำหรับ const


117

ฉันพยายามตรวจสอบว่ามีหลักการตั้งชื่อสำหรับชื่อconstใน Golang หรือไม่

โดยส่วนตัวแล้วฉันมักจะทำตามสไตล์ C และเขียนเป็นตัวพิมพ์ใหญ่ แต่ฉันไม่พบสิ่งใดในหน้านี้http://golang.org/doc/effective_go.htmlซึ่งดูเหมือนว่าจะมีการกำหนดรูปแบบการตั้งชื่อสำหรับภาษานั้น ๆ


5
ฉันชอบเขียนค่าคงที่ในFOO_BAR_BAZรูปแบบเพื่อให้อ่านง่าย แต่น่าเสียดายที่มีผลต่อการมองเห็นค่าคงที่และไม่ใช่เรื่องธรรมดา ฉันต้องกลืนความภาคภูมิใจและยอมรับการประชุมแม้ว่าฉันจะไม่ชอบก็ตาม
byxor

คำตอบ:


131

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

ตัวอย่างบางส่วน:

  • md5.BlockSize
  • os.O_RDONLY เป็นข้อยกเว้นเนื่องจากยืมโดยตรงจาก POSIX
  • os.PathSeparator

7
สิ่งสำคัญคือต้องพิจารณาว่าคุณต้องการให้constองค์ประกอบของคุณสัมผัสกับแพ็คเกจอื่น ๆ หรือไม่ หากคุณใช้UpperCamelCaseหรือALL_CAPSคุณจะส่งออกนอกแพ็กเกจของคุณ ด้วยเหตุนี้ฉันจึงยึดติดกับlowerCamelCaseตัวแปร const ส่วนตัวและฉันจำได้ว่าอ่านคำแนะนำนี้จากคนที่ค่อนข้างใกล้ชิดกับโครงการ Go (หรือบางทีอาจจะเป็นเอกสารอย่างเป็นทางการ - ฉันลืมที่ไหน)
weberc2

81

Go Code ทบทวนความคิดเห็น

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

คุณสามารถดูสิ่งนี้เป็นส่วนเสริมของ http://golang.org/doc/effective_go.html

หมวกแบบผสม

ดูhttp://golang.org/doc/effective_go.html#mixed-caps สิ่งนี้มีผลแม้ว่าจะละเมิดอนุสัญญาในภาษาอื่นก็ตาม ตัวอย่างเช่นค่าคงที่ที่ไม่ได้ส่งออกคือ maxLength ไม่ใช่ MaxLength หรือ MAX_LENGTH


ไปอย่างมีประสิทธิภาพ

MixedCaps

สุดท้ายหลักการใน Go คือการใช้ MixedCaps หรือ mixedCaps แทนการขีดล่างเพื่อเขียนชื่อหลายคำ


ข้อกำหนดภาษาโปรแกรม Go

ตัวระบุที่ส่งออก

ตัวระบุอาจถูกส่งออกเพื่ออนุญาตการเข้าถึงจากแพ็คเกจอื่น ตัวระบุจะถูกส่งออกหากทั้งสอง:

  • อักขระตัวแรกของชื่อตัวระบุคือตัวอักษรตัวพิมพ์ใหญ่ Unicode (คลาส Unicode "Lu"); และ

  • ตัวระบุถูกประกาศในบล็อกแพ็กเกจหรือเป็นชื่อฟิลด์หรือชื่อวิธีการ

ตัวระบุอื่น ๆ ทั้งหมดจะไม่ถูกส่งออก


ใช้ฝาแบบผสม


12

ตัวอย่างเฉพาะ โปรดทราบว่าการประกาศประเภทเป็นค่าคงที่ (เมื่อเกี่ยวข้อง) จะเป็นประโยชน์กับคอมไพเลอร์

// Only visible to the local file
const localFileConstant string = "Constant Value with limited scope"

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