Consejos para la organizaci贸n del c贸digo con paquetes

驴C贸mo organizar el c贸digo Go con los paquetes?

Imagine un paquete como el anterior: Empaqueta los c贸digos fuente de ideas afines juntos.

Para programas peque帽os, probablemente no necesite definir otro paquete que no sea el paquete especial: principal. Para programas m谩s grandes, puede que necesite definir sus propios paquetes para organizar su c贸digo. Para las personas que trabajan con el mismo c贸digo para crear muchos programas, es posible que necesiten definir sus propias bibliotecas e importarlas a sus propios programas.

En mis propios proyectos, creo una carpeta cmd para mantener las aplicaciones de punto de entrada de mi programa, luego hago la inyecci贸n de dependencia y otro c贸digo de orquestaci贸n all铆. Todo el resto del c贸digo vive dentro de las carpetas internas y no es reutilizado por los paquetes externos que no sean los de mi programa.

Dividir paquetes en subdirectorios

Puede dividir los paquetes en subdirectorios, Go stdlib utiliza este estilo. Mira el paquete http por ejemplo. Est谩 dentro del paquete de red. Las cosas Http pertenecen a las cosas de la red, as铆 que, las ponen bajo el paquete net. Sin embargo, eso no significa que el paquete http pueda usar la parte interna del paquete net , no puede. Cada paquete go es una bestia diferente por s铆 sola , no hay relaci贸n entre net y http paquete http en stdlib aparte de los prop贸sitos de la organizaci贸n.

Go no proporciona ning煤n mecanismo de subempaquetado y cuando usted divide sus paquetes para organizar su paquete BIG, puede hacer algunas de las partes internas de su paquete al mundo exterior, y as铆, cualquiera puede importarlos. Puede que no quiera esto, por lo que la convenci贸n internal package impide que sus paquetes sean importados desde partes no deseadas. Explico los paquetes internos aqu铆 en este post .

Y, por 煤ltimo, los nuevos topos que est谩n empezando a ir, crear, src/ carpetas, no es necesario hacer eso. Simplemente coloque sus archivos fuente en la ra铆z de su proyecto. Es mejor as铆.

  • Los nombres deben ser tan simples como sea posible como: http, zip, y tiempo. Usted y otras personas van a usar y recordarlas con este nombre. Mant茅ngalos breves, sencillos, concisos y concisos.
  • No use palabras dobles o m谩s en nombres como: net_http . Hazlo as铆: net/http . Diferentes paquetes, pero como el paquete http est谩 dentro del directorio net , si hubiera otro paquete que se llamara tambi茅n http, no habr铆a ning煤n problema, porque viven en directorios separados.
  • Deja que la ruta del paquete hable por lo que hacen los paquetes . net/http . Est谩 claro, 驴no? http es un paquete que hace cosas relacionadas de alguna manera con la red. Si estuviera dentro del paquete security/http implicar铆a diferentes significados.
  • Utilice abreviaturas comunes si son familiares a los programadores ( o a los programadores en el dominio de la aplicaci贸n que est谩 construyendo) . Por ejemplo: En lugar de formateadoIO , stdlib usa fmt .
  • Definitivamente evita nombres de paquetes ultra gen茅ricos como api, modelos, com煤n, utils, helper etc. Por ejemplo: En lugar de un paquete modelo, defina un paquete que haga cosas de usuario llamado user.
  • No utilice guiones bajos ni cajas de camellos . S贸lo usa letras min煤sculas.
  • Los nombres pueden contener caracteres unicode ( pero no recomiendo usar esto)

M谩s sobre esto aqu铆 y aqu铆. Y para usar mejor los paquetes, siempre lee el c贸digo de stdlib.

  • No hay versionado de paquetes en Go. vaya a obtener siempre los datos de HEAD de un repositorio git. Sin embargo, hay algunas soluciones. Por ejemplo: Puede guardar un paquete que desee manualmente en su programa, para que pueda utilizar la versi贸n que desee. M谩s consejos aqu铆.
  • Para obtener todas las dependencias del paquete actual en el que est谩 trabajando escribiendo: vaya a get./…

隆Has llegado hasta aqu铆! Gracias por leer! Y por favor, ap贸yame: Seguir mi publicaci贸n. y a帽adir aplausos a mi mensaje ! An铆mame a escribir m谩s.

Estoy mayormente twitteando sobre Go, puedes seguirme en twitter: @inancgumus.

Recibir谩s consejos, tutoriales y notificaciones sobre mi pr贸ximo curso de Go en l铆nea.

Haga clic en la imagen para suscribirse a la lista de correo electr贸nico “Im Learning Go”! Gracias!

Publicado originalmente en blog.learngoprogramming.com el 26 de septiembre de 2017.

Code OrganizationGolangCode Organization TipsCodingGo Code With PackagesContin煤a la discusi贸n