Xiaobai aprende o básico das convenções de nomenclatura go 04 para nomear identificadores

Existem apenas duas coisas difíceis na ciência da computação: invalidação e nomeação de cache.

A nomenclatura é um requisito das linguagens de programação, mas uma boa nomenclatura visa melhorar a legibilidade e a manutenção do programa. Como é uma boa nomenclatura? Dave Cheney, colaborador e evangelista do Go, coloca desta forma: "Uma boa piada não é engraçada se você tiver que explicá-la. O mesmo vale para uma boa nomenclatura. "Independentemente da linguagem de programação, uma boa nomenclatura é necessária. Alguns princípios gerais devem ser seguidos , mas assim como a hipótese “a linguagem afeta o pensamento” mencionada anteriormente, diferentes linguagens de programação terão algumas convenções de nomenclatura personalizadas.

Com a ajuda do gofmt, a linguagem Go unificou o padrão de estilo de código. Gopher não precisa mais discutir sobre a colocação de colchetes, se deve usar tabulações ou espaços, se deve alinhar operações de atribuição, etc. Nesse caso, a nomeação tornou-se um dos poucos espaços onde os Esquilos podem “brincar livremente”. Porém, em relação à nomenclatura, a linguagem Go também possui princípios próprios que espera que todos sigam.

Esses dois princípios e algumas convenções de nomenclatura sob esses dois princípios serão elaborados a seguir.

Simples e consistente

Nossa compreensão mais intuitiva da simplicidade é “curta”, mas a simplicidade aqui também inclui a premissa da clareza.

Abaixo estão as convenções de nomenclatura para alguns identificadores de classe comuns na linguagem Go.

1 pacote

Para pacotes em Go, geralmente é recomendado nomeá-los com uma única palavra em letras minúsculas. A biblioteca padrão Go nos dá um bom exemplo nesse sentido

Insira a descrição da imagem aqui

Ao nomear um pacote, não devemos nos preocupar se ele tem o mesmo nome de outros pacotes, porque em Go os nomes dos pacotes não precisam ser exclusivos.

Por exemplo: o projeto foo tem um pacote chamado log, e o projeto bar também pode ter seu próprio pacote chamado log.

Os exemplos são os seguintes.

import "github.com/bigwhite/foo/log" // log.XX中的log指代github.com/ bigwhite/foo/log下的包
import barlog "github.com/bigwhite/bar/log" // barlog这个显式包名指代git

A linguagem Go recomenda que o nome do pacote seja consistente com o último segmento do caminho de importação do pacote (caminho de importação).

Por exemplo: golang.org/x/text/encodingo último segmento do caminho de importação do pacote é codificação, e o nome do pacote neste caminho deve ser codificação.

Mas em situações reais, existem muitas diferenças entre o nome do pacote e o último segmento do caminho de importação.
Por exemplo: o caminho de importação do pacote oficial do cliente da fila de mensagens distribuídas em tempo real NSQ é github.com/nsqio/go-nsq, mas o nome do pacote neste caminho é nsq. O autor analisa isso principalmente para usar o nome do warehouse para enfatizar que a implementação é para a linguagem Go. Por exemplo, o significado de go-nsq é que esta é uma biblioteca API cliente NSQ implementada na linguagem Go, para ser compatível com nsq-java, pynsq e ferrugem.-APIs de cliente em outras linguagens, como nsq, fazem distinções explícitas.

Além disso, quando nomeamos um pacote, devemos considerar não apenas o nome do pacote em si, mas também a nomenclatura dos identificadores exportados pelo pacote (como variáveis, constantes, tipos, funções, etc.).

2. Variáveis, tipos, funções e métodos

O número de pacotes em um projeto Go é limitado e a nomeação de variáveis, tipos, funções e métodos ocupa uma grande proporção do trabalho de nomeação.

A linguagem Go exige oficialmente que os identificadores sejam nomeados no CamelCase. Tomemos como exemplo os nomes das variáveis. Se o nome da variável for composto por mais de uma palavra, então essas palavras estão intimamente conectadas sem usar quaisquer conectores (como sublinhados).

A nomenclatura CamelCase vem em duas formas:

1) Uma é colocar a primeira letra da primeira palavra em minúscula e colocar a primeira letra de cada palavra subsequente em maiúscula, o que é chamado de " lowerCamelCase ". Este também é o método de nomenclatura de identificador mais comum em Go;

2) A primeira letra da primeira palavra e a primeira letra de cada palavra subsequente são maiúsculas, o que é chamado de " UpperCamelCase ", também conhecido como "PascalCase".

3) Como os identificadores com a primeira letra maiúscula são considerados identificadores de exportação de pacotes na linguagem Go, o big camel case só será usado quando houver exportações de pacotes. Porém, se a primeira letra de uma abreviatura estiver em maiúscula, as demais letras também deverão ser mantidas em maiúsculas, como HTTP (Hypertext Transfer Protocol), CBC (Cipher Block Chaining), etc.

Ao nomear variáveis, tipos, funções e métodos, a simplicidade e a brevidade ainda devem ser o princípio primário.

Sinta o efeito da convenção de nomenclatura Go:

// 不好的命名
func RuneCount(buffer []byte) int {
    
    
runeCount := 0
for index := 0; index < len(buffer); {
    
    
if buffer[index] < RuneSelf {
    
    
index++
} else {
    
    
_, size := DecodeRune(buffer[index:])
index += size
}
runeCount++
}
return runeCount
}
// 好的命名
func RuneCount(b []byte) int {
    
    
count := 0
for i := 0; i < len(b); {
    
    
if b[i] < RuneSelf {
    
    
 i++
} else {
    
    
_, n := DecodeRune(b[i:])
i += n
}
count++
}
return count
}

A convenção de nomenclatura da linguagem Go é profundamente influenciada pela linguagem C, o que não deixa de estar relacionado ao fato de que o pai da linguagem Go tem um profundo conhecimento da linguagem C.

Acho que você gosta

Origin blog.csdn.net/hai411741962/article/details/132689898
Recomendado
Clasificación