Convenções de nomenclatura para const

116

Estou tentando determinar se existe uma convenção de nomenclatura para os nomes de constem Golang.

Eu pessoalmente tenderia a seguir o estilo C e escrevê-los em maiúsculas, mas não encontrei nada nesta página http://golang.org/doc/effective_go.html que parece listar algumas convenções de nomenclatura para o idioma.

LtWorf
fonte
5
Eu adoraria escrever constantes no FOO_BAR_BAZestilo para facilitar a leitura, mas infelizmente isso afeta a visibilidade da constante e não é comum. Tive que engolir meu orgulho e aceitar a convenção, mesmo que não goste dela.
byxor

Respostas:

129

A biblioteca padrão usa estojo de camelo, portanto, aconselho você a fazer isso também. A primeira letra é maiúscula ou minúscula, dependendo se você deseja exportar a constante.

Alguns exemplos:

  • md5.BlockSize
  • os.O_RDONLY é uma exceção porque foi emprestado diretamente do POSIX.
  • os.PathSeparator
dobra direita
fonte
7
Também é importante determinar se você deseja que seu constelemento seja exposto a outros pacotes. Se você usar UpperCamelCaseou ALL_CAPSexportará fora da embalagem. Por esta razão, eu me lowerCamelCaseimporto com variáveis ​​const privadas, e me lembro de ter lido essa recomendação de alguém relativamente próximo ao projeto Go (ou talvez até mesmo na documentação oficial - esqueci onde).
weberc2
79

Comentários de revisão de código Go

Esta página coleta comentários comuns feitos durante as revisões do código Go, para que uma única explicação detalhada possa ser consultada por atalhos. Esta é uma lista de erros comuns, não um guia de estilo.

Você pode ver isso como um suplemento de http://golang.org/doc/effective_go.html .

Caps Mistas

Consulte http://golang.org/doc/effective_go.html#mixed-caps . Isso se aplica mesmo quando quebra as convenções em outros idiomas. Por exemplo, uma constante não exportada é maxLength e não MaxLength ou MAX_LENGTH.


Effective Go

MixedCaps

Finalmente, a convenção em Go é usar MixedCaps ou mixedCaps em vez de sublinhados para escrever nomes com várias palavras.


A especificação da linguagem de programação Go

Identificadores exportados

Um identificador pode ser exportado para permitir o acesso a ele de outro pacote. Um identificador é exportado se:

  • o primeiro caractere do nome do identificador é uma letra maiúscula Unicode (classe Unicode "Lu"); e

  • o identificador é declarado no bloco de pacote ou é um nome de campo ou nome de método.

Todos os outros identificadores não são exportados.


Use tampas mistas.

PeterSO
fonte
12

Exemplos específicos. Observe que declarar o tipo na constante (quando relevante) pode ser útil para o compilador.

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

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