Je suis actuellement en stage depuis 4 mois, et lors de la révision de mon code, mon patron n'a pas aimé que j'avais gardé un objet spécifique local pour un certain nombre de méthodes à travers quelques classes distinctes au sein d'un même assemblage. Il n'aimait pas que l'on me crée un nouvel objet à chaque fois, et à la place, il m'a dit de créer un seul objet accessible de n'importe où. J'ai donc dû le créer en tant qu'objet statique au sein d'une classe statique, et simplement le référencer à partir d'ici, je veux l'utiliser!
Comment traiteriez-vous cela, car je ne programme que professionnellement depuis 4 mois!
teamwork
coding-standards
singleton
Darren Young
la source
la source
Réponses:
Si un objet suffit, créer un objet à chaque fois est un gaspillage, et ici votre patron a peut-être raison.
Le problème est un accès approprié à cet objet. Une méthode de type usine avec une bonne visibilité qui renvoie toujours cet objet statique est la première solution qui vient à l'esprit. D'autres existent certainement.
la source
Je ne peux pas commenter votre cas spécifique, mais l'utilisation de variables globales est parfois une bonne solution. La classe System de Java regorge de variables globales statiques.
Mais en général, si vous pensez que vous avez raison et que votre patron a tort, alors pourquoi ne demandez-vous pas à votre patron d'expliquer pourquoi il pense qu'une variable globale est une meilleure solution? Un simple "je ne l'aime pas" est aussi vague que "les variables globales sont mauvaises". Vous devez exiger plus de votre patron!
S'il ne peut pas donner de raisons à sa position et que vous pouvez donner des raisons à votre position, ou vice versa, alors c'est une bonne opportunité d'apprentissage. Si vous pouvez tous deux justifier vos positions, alors c'est probablement une question de goût - ou une question d'expérience: votre patron doit avoir programmé professionnellement plus de 4 mois, je pense?
la source
java.lang.System
contient exactement trois variables globales, et pour chacune d'entre elles, il existe une méthode pour la définir correctement. MaisSystem
est plein de méthodes statiques qui retournent des objets globaux, et il n'y a rien de mal à cela, je ne peux pas argumenter.System
simplifie, disons, 99,9% des cas d'utilisation au prix de causer des problèmes dans les 0,1% restants. Il n'y a pas de "bonne" réponse pour savoir si 0,1% vaut la complexité supplémentaire.En tant que personne à votre poste, le mieux que vous puissiez faire est d'apprendre. Si l'objet est essentiellement une constante (c'est-à-dire qu'il ne peut pas changer et qu'il ne maintient pas son état), alors votre patron a peut-être raison. Il n'y a aucun mal à avoir un objet constant statique. Après tout, combien de définitions de PI existe-t-il?
Certaines personnes défendent l'état d'esprit «pas d'objets globaux» au point de devenir un fervent religieux. C'est pour l'une des deux raisons: ils ont été difficiles à suivre pour détecter les bogues ou la fragilité du système en raison de la surutilisation des variables / objets globaux, ou ils ont entendu dire que c'était mauvais et ils ne pouvaient pas penser par eux-mêmes. Personnellement, je fais partie du groupe de personnes qui ont été durement touchées par la fragilité et les bogues difficiles à suivre - mais j'ai également appris un certain équilibre ici.
Si j'étais à votre place, j'irais de l'avant et ferais ce que dit le patron - c'est son cul sur la ligne après tout. Ensuite, je regarderais et verrais les effets de ce choix au fil du temps. Il s'agit d'un outil d'apprentissage efficace.
la source
Selon la situation spécifique, une variable globale peut être la meilleure solution. Dans la programmation intégrée, les globaux n'occupent pas d'espace de pile et c'est pour cette raison un bon choix.
Globales ou pas, je trouve que c'est une bonne pratique de mettre un préfixe sur les globaux. Cela rendra les autres programmeurs googler votre code conscients de l'impact en cas de désordre.
la source
Peut-être que votre patron voulait que vous utilisiez le motif Singleton. C'est une très bonne pratique lorsque vous devez accéder à un certain objet à partir de plusieurs instances.
Voici un lien vers l' explication des wikipédias
la source
good practice
serait d'utiliser en.wikipedia.org/wiki/Dependency_injection