Il est possible de déclarer les Using à l’extérieur ou à l’intérieur du namespace :
Extérieur :
using System; using Guid = System.Guid; namespace Microsoft.Sample { public class Program {
} }
Intérieur :
namespace Microsoft.Sample { using System; using Guid = System.Guid; public class Program {
} }
L’utilisation de Style Cop (Microsoft Source Analysis) lève une erreur lorsque les directives « Using » ne sont pas à l’intérieur du namespace :
SA1200 : UsingDirectivesMustBePlacedWithinNamespace
Cause : A C# using directive is placed outside of a namespace element.
Rule Description : A violation of this rule occurs when a using directive or a using-alias directive is placed outside of a namespace element, unless the file does not contain any namespace elements.
Pourquoi faut-il placer les directives Using à l'intérieur du Namespace ?
Deux raisons :
- Les Alias : la définition des Alias à l'intérieur du namespace permet d'éviter des conflits entre des Alias et des types.
- La lisibilité : Quel est l'information la plus importante ? Plus que le namespace de ma class, c'est les using utilisés qui apportent le plus d'informations.
Ces deux raisons sont suffisantes pour que je préconise la déclaration des Using à l'intérieur du namespace.
A propos des performances ?
Une autre raison invoquée pour placer les using à l'intérieur du namespace est les performances. Ceci s'avère faux dans la pratique. Je vous invite à faire vos propres test ou à lire les articles suivant :
- http://groups.google.com/group/wpf-disciples/browse_thread/thread/3ab05531fe6645a/f07e5d510eac741d?hide_quotes=no
- http://www.hanselman.com/blog/BackToBasicsDoNamespaceUsingDirectivesAffectAssemblyLoading.aspx
Et vous qu'est-ce que vous préconisez ?