Convenciones de nomenclaturas

¿Qué son las convenciones de nomenclaturas?

Las convenciones de nomenclaturas que adoptamos permiten mantener la legibilidad y mantenibilidad del código. Existen convenciones en Go que son forzados por el compilador y otras que son adoptadas por el programador. El utilizar convenciones de forma correcta fomenta la integración y la aceptación del programador por parte de la comunidad de Golang.

Una de las convenciones antes vistas es el uso de mayúsculas dentro de los paquetes para hacer los elementos de este exportables. Esto no existe en otros tipos de lenguajes, en donde las variables utilizan convenciones como el guión bajo para representar una propiedad privada.

La forma en la que nombremos a la variable, es decir como elijamos que nombre llevará, es también un tópico importante. La convención en Golang es utiliza CamelCase o PascalCase, según sea la necesidad de hacer pública o no la variable.

var miVariable // Camel Case
var MiVariable // Pascal Case

Es común ver en Go, variables que usan una sola letra y que referencian al tipo de la variable. Esto se utiliza para poner el foco del programador en la lógica y no en la variable.

var i int = 100
var s string = "Roma"
var b bool = true

La nomenclatura correcta también permite hacer el código mas leíble. Una buena práctica es dar nombres consistentes a los tipos, y a sus funciones nombres que describan lo que hacen.

func Perimetro(f float64) float64
func (c *Circulo) Perimetro() float64

En Golang, las interfaces son nombradas como verbos con terminación “er”. Este sufijo da significado a la acción que realiza la interface. Ejemplos de ello son Reader (Lector) y Writer (Escritor).

Para las funciones que se exportan, la convención consiste en respetar que cuando el paquete se importa, será accesado mediante el nombre del paquete. Por ejemplo para el paquete strings, utilizaremos strings.ToLower().

Algunas consideraciones adicionales al usar convenciones para nomenclaturas.

  • Convenir entre aquellos que usen el código.
  • Establecer convenciones a nivel de proyecto si se requiere.
  • Elaborar documentación accesible para quienes se vayan incorporando al equipo.