Quiero escribir una función en Go para insertar un documento en una colección en una base de datos MongoDB. Qué forma de nombrar la función es mejor,
writeToMongoDB
oWriteToMongoD
?
El segundo es CamelCase, mientras que vi a alguien usando el estilo del primero, así que no estoy seguro de cuál es el más apropiado. Gracias.
packageA
, el archivo B puede acceder a la función usandopackageA.WriteToMongoD
(siendo necesario el paquete A como calificador).Respuestas:
Sintaxis
En Go esto no es una cuestión de estilo, es una cuestión de sintaxis.
Los nombres exportados (es decir, los identificadores que se pueden usar desde un paquete diferente al que están definidos) comienzan con una letra mayúscula. Por lo tanto, si su método es parte de su API pública, debe escribirse:
WriteToDB
pero si es un método auxiliar interno, debería escribirse:
writeToDB
La ventaja de hacerlo de esta manera sobre el uso de palabras clave para definir exportedness (
extern
,public
, etc.) es que lo que es una parte de los que asegura nombre en cualquier lugar de un identificador se utiliza se puede decir si se exporta o no sin tener que encontrar donde se definió (para ver si la definición contiene una palabra clave).Consulte también: Identificadores exportados de la especificación.
i18n
Debido a que Go está codificado en UTF-8 y admite cualquier carácter Unicode con la propiedad de letras o números en los nombres de los identificadores, algunas personas en configuraciones regionales que no tienen un concepto de caso pueden tener problemas para crear métodos exportados (el valor predeterminado es no exportado). En este caso (juego de palabras) es común anteponer identificadores con un
X
para indicar exportedness. Por ejemplo:X日本語
Consulte también: ¿Qué pasa con los identificadores Unicode? de las preguntas frecuentes.
Estilo
En cuanto al estilo general, es utilizar siempre camel-case (excepto la primera letra, como se mencionó anteriormente). Esto incluye constantes, funciones y otros identificadores. Entonces, por ejemplo, una lista de constantes (exportadas) podría verse así:
const ( StateConnected = iota StateError StateDone internalStateMask = 0x2 )
Además, las abreviaturas siempre se escriben con el mismo caso, por lo que debería escribir una de las siguientes:
en lugar de
writeDb
oDbWrite
.fuente
En Go, es una convención utilizar cap mixtos. De los documentos: https://golang.org/doc/effective_go.html#mixed-caps
Tenga en cuenta que los nombres de nivel de archivo que comienzan con Mayúscula se exportan a nivel de paquete: https://golang.org/doc/effective_go.html#Getters
Además, es una convención escribir siglas en mayúsculas. Así que a continuación está bien:
writeToMongoDB // unexported, only visible within the package
o
WriteToMongoDB // exported
Y no:
fuente
Nombres
Nombres de paquetes
Getters
owner := obj.Owner() if owner != user { obj.SetOwner(user) }
Nombres de interfaz
MixedCaps
ref: Go eficaz
fuente
En Golang, cualquier variable (o función) con un identificador que comience con una letra mayúscula (ejemplo, CamelCase) se hace pública (accesible) para todos los demás paquetes de su programa, mientras que aquellos que comienzan con una letra minúscula (ejemplo , camelCase) no es accesible para ningún paquete excepto en el que se declara.
Debe usar CamelCase en caso de que tenga la intención de usar la variable (o función) en otro paquete, o puede seguir con camelCase.
fuente