Maison > développement back-end > Golang > Évitez la fonction Go init

Évitez la fonction Go init

Patricia Arquette
Libérer: 2024-12-19 11:24:18
original
960 Les gens l'ont consulté

Avoid the Go init function
Image générée avec l'IA

Je me méfie chaque fois que je vois un package Go utilisant une fonction init. Les fonctions d'initialisation peuvent être utiles dans certaines situations, mais la plupart des gens les utilisent à mauvais escient.

Qu'est-ce qu'une fonction Init ? ?

Dans Go, la fonction init() est exécutée dans le cadre de l'initialisation du package juste après l'initialisation des variables et la définition des valeurs.

Ce processus se produit si un package est importé, quel que soit le contenu utilisé dans le package.

Je vois souvent de la logique dans les fonctions d'initialisation qui ne devrait jamais être là.

  • Création d'instances d'une structure

  • Remplir les données dans une structure

  • Initialisation des autres dépendances

Le problème, ce sont les tests.

Tester le chemin du bonheur est peut-être assez simple, mais qu'en est-il des scénarios d'erreur ?

Si vous ajoutez une logique dans les fonctions d'initialisation qui pourrait se comporter différemment dans différentes conditions, il devient difficile de reproduire ces scénarios.

N'oubliez pas que la clé pour créer un logiciel fiable est d'écrire des tests qui exécutent les mêmes fonctions de manière répétée avec différentes entrées pour valider différents résultats. Ce n’est pas facile de faire ça avec les fonctions init, donc les gens n’écrivent pas ces tests.

Une utilisation excessive de la fonction init rend finalement le code plus difficile à tester et à maintenir et peu fiable.

Ma recommandation est d’éviter complètement la fonction init. Habituellement, utiliser un constructeur comme une fonction New() est la voie à suivre.


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal