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.
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!