Zen Go (Pocket Version)

En prévision du début du cours «Développeur de Golang», nous avons préparé la traduction d'une petite note utile.




Dix conseils techniques pour écrire du code Go simple, lisible et facile à entretenir. Présenté dans le cadre de GopherCon Israel 2020 .

Chaque paquet n'a qu'un seul but.


Un package Go correctement conçu ne devrait implémenter qu'une seule idée, introduisant un ensemble de comportements associés. Un bon package Go commence par un bon nom. Essayez de faire du nom une brève présentation de votre package, décrivant ce qu'il fournit en utilisant un seul mot.

Traitement d'erreur explicite


Les programmes fiables se composent d'éléments qui gèrent les erreurs avant de pouvoir les frapper à l'arrière. La verbosité de if err! = Nil {return err} est justifiée par l'importance d'une gestion bien pensée de chaque erreur aux endroits où elles peuvent se produire. La panique et la récupération ne sont pas des exceptions, elles ne sont pas destinées à être utilisées de cette manière.

Empêchez l'imbrication profonde avec le retour


Chaque fois que vous indenter, vous ajoutez une condition supplémentaire à la pile mentale du programmeur, occupant l'un des 7 ± 2 emplacements de sa mémoire à court terme. Évitez les flux de contrôle de remplissage à plusieurs niveaux. Au lieu d'une imbrication profonde, conservez le chemin de code réussi aussi loin que possible à gauche à l'aide des opérateurs de limite.

Laisser la simultanéité à l'appelant


Laissez l'appelant choisir s'il veut exécuter votre bibliothèque ou fonctionner de manière asynchrone, au lieu de lui imposer ce choix. Si votre bibliothèque utilise le multithreading, elle doit le faire de manière transparente.

Avant de commencer le goroutine, demandez quand il s'arrête.


Les gorutins ont des ressources; verrous, variables, mémoire, etc. Le moyen le plus fiable de libérer ces ressources est d'arrêter le goroutine qui les possède.

Évitez les propriétés au niveau du package


Visez la transparence, réduisez la connectivité et évitez les horribles actions à distance en fournissant les dépendances dont le type a besoin en tant que champs de ce type, plutôt qu'en utilisant des variables de package.

La simplicité compte


La simplicité n'est pas synonyme de primitivité. La simplicité ne signifie pas l'inachèvement, cela signifie la lisibilité et la maintenabilité . Si vous avez l'embarras du choix, penchez-vous toujours vers la solution la plus simple.

Écrivez des tests pour capturer le comportement de votre API de package.


Que vous commenciez par des tests ou que vous finissiez, que vous recherchiez une couverture à 100% avec des tests ou que vous soyez satisfait du minimum nécessaire - malgré tout cela, l'API de votre package est votre contrat avec les utilisateurs. Les tests sont une garantie que ces contrats sont clairement énoncés. Assurez-vous de tester les comportements que les utilisateurs peuvent observer et sur lesquels ils peuvent compter.

Si quelque chose vous semble lent, commencez par le prouver en utilisant le benchmark.


De nombreux crimes contre la durabilité sont commis au nom de la productivité. L'optimisation détruit les abstractions, expose l'intérieur et lie étroitement. Si vous décidez d'assumer ce fardeau, assurez-vous qu'il y a de vraies raisons à cela.

La modération est vertu


Utilisez des goroutines, des canaux, des verrous, des interfaces, une intégration avec un sens des proportions.

Questions de support


La clarté, la lisibilité, la simplicité sont tous des aspects de la durabilité. Est-il possible de soutenir ce sur quoi vous avez travaillé dur après votre départ? Que pouvez-vous faire aujourd'hui pour faciliter la vie de ceux qui vous succéderont demain?



En savoir plus sur le cours.



All Articles