Ou placer les Using ? A l’intérieur ou à l’extérieur du namespace ?

Publié le 17 novembre 2008 par Blogtech

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 :

  1. Les Alias : la définition des Alias à l'intérieur du namespace permet d'éviter des conflits entre des Alias et des types.
  2. 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 :

Et vous qu'est-ce que vous préconisez ?