90 votes

De quelle manière nommer une fonction dans Go, CamelCase ou Semi-CamelCase?

Je veux écrire une fonction dans Go pour insérer un document dans une collection dans une base de données MongoDB. Quelle manière de nommer la fonction est la meilleure,

  • writeToMongoDB ou
  • WriteToMongoD ?

Le second est CamelCase, alors que je voyais quelqu'un utiliser le style du premier, je ne suis donc pas sûr de celui qui convient le mieux. Merci.

131voto

Sam Whited Points 454

La syntaxe

Allez ce n'est pas une question de style, c'est une question de syntaxe.

Exporté des noms (qui est, les identifiants qui peuvent être utilisés à partir d'un paquet d'autres que celui où ils sont définis) commencer avec une lettre majuscule. Ainsi, si votre méthode est la partie de votre API publique, il devrait être écrit:

WriteToDB

mais si c'est une assistance interne de la méthode qu'il devrait être écrit:

writeToDB

L'avantage de cette façon de plus de l'aide de mots-clés pour définir exportedness (extern, public, etc.) rendre une partie du nom, n'importe où, un identificateur est utilisé, vous pouvez savoir si il est exporté ou non, sans avoir à trouver où il a été défini (pour voir si la définition contient un mot clé).

Voir aussi: Exportées Identifiants à partir de la spécification.

i18n

Parce que Go est codé en UTF-8 et supporte n'importe quel caractère Unicode avec les lettres ou chiffres de la propriété en identifiant les noms de certaines personnes dans les localités qui n'ont pas de notion de cas peut avoir de la difficulté à créer des méthodes exportées (la valeur par défaut est non exportée). Dans ce cas (pun intended), il est courant de préfixe identifiants avec un X pour indiquer exportedness. Par exemple: X日本語

Voir aussi: qu'est-Ce qu'Unicode identifiants? à partir de la FAQ.

Style

Autant que le style général va, c'est de toujours utiliser des chameaux cas (sauf pour la première lettre, comme mentionné précédemment). Cela inclut de constantes, de fonctions, et d'autres identificateurs. Ainsi, par exemple, une liste de (exporté) constantes pourrait ressembler à:

const (
    StateConnected = iota
    StateError
    StateDone

    internalStateMask = 0x2 
)

En outre, les abréviations sont toujours écrites avec le même cas, donc, on peut écrire l'une des opérations suivantes:

dbWrite
writeDB

au lieu de writeDb ou DbWrite.

31voto

abhink Points 4753

Allez, il est de convention à des usages mixtes de la pac. À partir de la documentation: https://golang.org/doc/effective_go.html#mixed-caps

Enfin, la convention est de l'utilisation MixedCaps ou plutôt mixedCaps que les traits de soulignement pour écrire les noms de groupe de mots.

Notez que le fichier de niveau un nom commençant par une lettre majuscule sont exportés au niveau du colis: https://golang.org/doc/effective_go.html#Getters

Aussi, il est de convention pour écrire les sigles sur tous les chapeaux. Donc, ci-dessous est très bien:

writeToMongoDB // unexported, only visible within the package

ou

WriteToMongoDB // exported

Et non pas:

writeToMongoDb

14voto

Tanmay Garg Points 432

Dans Golang, toute variable (ou fonction) avec un identifiant commençant par une lettre majuscule (exemple, CamelCase) est rendue publique (accessible) à tous les autres packages de votre programme, alors que ceux commençant par une lettre minuscule (exemple , camelCase) n’est accessible à aucun paquet sauf celui pour lequel il est déclaré.

Vous devez utiliser CamelCase si vous souhaitez utiliser la variable (ou la fonction) dans un autre package, ou si vous pouvez vous en tenir à CamelCase en toute sécurité.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X