Pergi konvensi penamaan untuk const

117

Saya mencoba menentukan apakah ada konvensi penamaan untuk nama-nama constdi Golang.

Saya pribadi cenderung mengikuti gaya C dan menulisnya dalam huruf besar, tetapi saya belum menemukan apa pun di halaman ini http://golang.org/doc/effective_go.html yang sepertinya mencantumkan beberapa konvensi penamaan untuk bahasa tersebut.

LtWorf
sumber
5
Saya ingin menulis konstanta dalam FOO_BAR_BAZgaya agar mudah dibaca, tetapi sayangnya hal itu memengaruhi visibilitas konstanta dan itu tidak umum. Saya hanya harus menelan harga diri saya dan menerima konvensi tersebut meskipun saya tidak menyukainya.
byxor

Jawaban:

131

Perpustakaan standar menggunakan tas unta, jadi saya sarankan Anda melakukannya juga. Huruf pertama adalah huruf besar atau kecil tergantung pada apakah Anda ingin mengekspor konstanta.

Beberapa contoh:

  • md5.BlockSize
  • os.O_RDONLY merupakan pengecualian karena dipinjam langsung dari POSIX.
  • os.PathSeparator
sebelah kanan
sumber
7
Penting juga untuk menentukan apakah Anda ingin constelemen Anda diekspos ke paket lain. Jika Anda menggunakan UpperCamelCaseatau ALL_CAPSAnda akan mengekspornya ke luar paket Anda. Untuk alasan ini, saya tetap lowerCamelCasemenggunakan variabel konstanta pribadi, dan saya ingat membaca rekomendasi ini dari seseorang yang relatif dekat dengan proyek Go (atau mungkin bahkan dalam dokumentasi resmi - saya lupa di mana).
weberc2
81

Go Code Review Komentar

Halaman ini mengumpulkan komentar-komentar umum yang dibuat selama review kode Go, sehingga penjelasan rinci tunggal dapat dirujuk dengan singkatan. Ini adalah daftar kesalahan umum cucian, bukan panduan gaya.

Anda dapat melihatnya sebagai suplemen untuk http://golang.org/doc/effective_go.html .

Topi Campuran

Lihat http://golang.org/doc/effective_go.html#mixed-caps . Ini berlaku bahkan ketika melanggar konvensi dalam bahasa lain. Misalnya konstanta yang tidak diekspor adalah maxLength bukan MaxLength atau MAX_LENGTH.


Go yang Efektif

MixedCaps

Terakhir, konvensi di Go adalah menggunakan MixedCaps atau mixedCaps daripada garis bawah untuk menulis nama banyak kata.


Spesifikasi Bahasa Pemrograman Go

Pengenal yang diekspor

Pengidentifikasi dapat diekspor untuk mengizinkan akses ke sana dari paket lain. Pengenal diekspor jika keduanya:

  • karakter pertama dari nama pengenal adalah huruf besar Unicode (Unicode class "Lu"); dan

  • pengenal dideklarasikan di blok paket atau itu adalah nama bidang atau nama metode.

Semua pengenal lainnya tidak diekspor.


Gunakan topi campuran.

peterSO
sumber
12

Contoh spesifik. Perhatikan bahwa mendeklarasikan tipe dalam konstanta (jika relevan) dapat membantu compiler.

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

// Exportable constant
const GlobalConstant string = "Everyone can use this"
Speedy99
sumber