Comment utiliser l’attribut [Obsolete] pour déprécier certaines parties de son code

Quel est le meilleur moyen pour indiquer qu’il faut cesser d’utiliser une classe, une méthode ou une propriété énormément sollicitée de votre code? L’une des stratégies les plus appropriées est de passer par l’utilisation de l’attribue [Obsolete] qui est inclus à même le framework .NET.

L’utilisation de cet attribut permet d’indiquer aux consommateurs de votre librairie que certaines de vos fonctions sont en cours de dépréciation au profit d’un autre ensemble de fonctionnalités. Ce qui rend intéressant cet approche, c’est que le compilateur C# ainsi que Visual Studio sont aussi liés à cet attribut. Lorsque l’attribut est utilisé, des avertissements de compilation seront affichés aux différents endroits où les éléments de code dépréciés seront utilisés.

C’est très gentil comme approche, lorsqu’on y pense.

Mise en contexte

L’attribut [Obsolete] s’utilise de plusieurs façons. Considérons la classe UserDirectory qui suit.


using System.Collections.Generic;
namespace FrenchCoding.Obsolete
{
public class UserDirectory
{
public List<string> GetAllUsers()
{
return new List<string>();
}
}
}

Pour bonifier l’exemple, disons que cette classe est consommée dans un namespace différent dans une classe UserSearchEngine.


namespace FrenchCoding.Consume
{
using Obsolete;
using System.Collections.Generic;
public class UserSearchEngine
{
public List<string> SearchUsers(string query)
{
var directory = new UserDirectory();
return directory.GetAllUsers();
}
}
}

Scénario #1 – [Obsolete]

Supposons que nous ajoutions [Obsolete] sur la classe UserDirectory. Dorénavant, deux effets se produiraient visuellement au nivea de Visual Studio.

warning-obsolete warning-obsolete-compile

Un indicateur visuel ainsi qu’un avertissement de compilation est maintenant affiché dans l’IDE. Il n’est vraiment pas possible de passer à côté.

Scénario #2 – [Obsolete(<string>)]

Il est possible d’ajouter un paramètre de type string à l’attribut Obsolete afin d’ajouter un message qui sera ajouté à l’avertissement de compilation. Il suffit d’écrire l’attribut ainsi: [Obsolete(« Utilisez UserRepository en remplacement »)].

Cela aura effet de produire un avertissement de compilation qui prend la forme suivante:

warning-obsolete-compile-message

Scénario #3 – [Obsolete(<string>, <bool>)]

Cette signature de l’attribue Obsolete est, à mon avis, l’équivalent d’une bombe nucléaire. Le paramètre bool qui est ajouté permet d’indiquer au compilateur de générer une erreur de compilation au lieu d’un avertissement.

error-obsolete-compile-message

Lors qu’activé, ce paramètre fait en sorte que votre projet ne compilera pas tant et aussi longtemps que vous n’aurez pas réglé la ou les fonctionnalités dépréciées. Au moins, la signature fait en sorte que vous devez obligatoirement indiquer un message lorsque vous activez la génération d’erreurs avec [Obsolete]. Cela fait un peu moins rude pour vos consommateurs!

Publicité

Auteur : Pascal Paradis

Je suis les mains et le cerveau derrière http://frenchcoding.com. Je développe des microservices chez @UbisoftMTL. Amateur de Hockey et j'aime la technologie, en général.

Laisser un commentaire

Entrer les renseignements ci-dessous ou cliquer sur une icône pour ouvrir une session :

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.

%d blogueueurs aiment cette page :