De ce que je comprends, le qualificatif global :: code> vous permet d'accéder à un espace de noms qui a été masqué par un autre avec le même nom. page MSDN utilise
système code> à titre d'exemple. Si vous créez votre propre espace de noms code> système code>, vous pouvez atteindre l'original avec
global :: système code>. La première chose qui vous est venue à l'esprit, c'est pourquoi quelqu'un appelle-t-il son espace de noms
système code> ?? La page continue à dire que cela n'est évidemment pas recommandé, mais la duplication des espaces de noms est très possible dans les grands projets. Si / quand cela se produit, est-ce un signe que les choses se dirigent dans la mauvaise direction ou sont-elles des raisons valables d'avoir des espaces de noms conflictuels? P>
5 Réponses :
En général, global :: code> est utilisé pour indiquer "Je veux commencer en haut de la structure d'espace de noms". Si j'ai un espace de noms appelé
myProduct.System code>, alors tout ce qui réside dans l'espace de nom code> myProduct ne sera pas en mesure d'accéder au système Microsoft
SYSTEM CODE> NAMES. Est-ce une odeur de code? Peut-être parfois, mais pas particulièrement em> smelly. P>
Tout code généré par machine devrait essayer d'utiliser global :: code> afin de minimiser le potentiel de conflits d'espace de noms, cela peut ne pas être au courant. De plus, l'un de votre code qui peut courir dans des conflits peut l'utiliser pour être plus spécifique. P>
Une raison légitime d'avoir des espaces de noms contradictoires pourrait être l'utilisation de bibliothèques internes écrites pour des versions antérieures de .NET qui ne contenaient pas de fonctionnalités ajoutées dans les versions ultérieures. Dans le fichier .NET 1.1 jours, par exemple, j'ai écrit une classe de registre que les appels de registre d'API emballés. Par pure hasard, les noms de méthode que j'ai choisis étaient exactement les mêmes que ceux de la classe de registre ultérieure .NET, et ils ont fait exactement les mêmes choses, il était donc facile de débrancher mon code local. Pour des trucs plus compliqués, être capable d'utiliser un morceau de code plus ancien et mal nommé avec le qualificatif nommer intentionnellement un nouveau morceau de code à l'aide d'un espace de noms .NET existant serait définitivement une odeur de code, cependant. P> global :: code> pourrait être utile. P>
Je pense que cela se produit de temps à autre que l'un de vos espaces de noms a le nom d'un autre. Par exemple, j'ai une espace de noms .persistence.nibernate, où NHibernate pourrait également être l'espace de noms root de l'assemblage NHibernate. P>
Je ne vois aucune odeur de code ici, il s'agit juste de nommer ISSES;) p>
Microsoft a quelques bonnes lignes directrices d'espace de noms dans l'excellent livre < Code> Directives de conception-cadre 2nd ed. code> . En général, ils recommandent d'introduire des modificts (par exemple, en nommant votre flux de types). P>
Je ne crois pas que j'ai jamais utilisé le niveau mondial :: qualificatif. Je considérerais généralement une odeur de code (bien qu'il y ait des exceptions, comme la musiggénérées et les svariables sointes). P>
Y a-t-il de bonnes odeurs de code? : p
@RPFLO: Peut-être qu'il veut dire "est-ce une odeur de code sévère?"
Great Tag:
Evil-Draers code>.
Si vous n'avez pas au moins une odeur de code, vous n'êtes pas sur une date limite.