> Tech > Méthode d’extension

Méthode d’extension

Tech - Par Renaud ROSSET - Publié le 24 mars 2011
email


Ce code est difficilement réutilisable et vous connaissez des centaines de développeurs qui ont déjà copié cette méthode maintes fois. Tout comme le stockage de type table, vous pouvez créer une méthode d’extension qui permet d’abstraire les parties communes du code et utilise des expressions lambda pour

Méthode d’extension

le travail spécifique. Voici la méthode d’extension qui contient le traitement commun à chaque file :

public static void ProcessQueue(this MessageQueue
queue, TimeSpan timeout, Func action)
{
bool more = true;
while (more)
{
Thread.Sleep(timeout);
if (queue.DoesQueueExist())
{
Message msg = queue.GetMessage();
if (msg != null)
{
more = action(msg);
queue.DeleteMessage(msg);
}
}
}
}

Et voici comment vous allez l’utiliser dans l’exemple présenté précédemment:

queue.ProcessQueue(TimeSpan.FromSeconds(10),
(msg) =>
{
RoleManager.WriteToLog("Information",
string.Format(
"Message '{0}' processed.",
msg.ContentAsString()));
return true;
});

Vous allez peut-être penser que ces modifications n’apportent pas une réelle valeur ajoutée. Dans un sens, c’est vrai. L’exemple conserve exactement la même fonctionnalité qu’avant mon intervention. Mais cela ne veut pas dire pour autant que ces modifications n’ont pas produit une certaine valeur. Ces méthodes ont permis de factoriser les algorithmes communs que vous allez employer dans tous les rôles Worker que vous créez. Ce résultat en lui-même est porteur de valeur : ces méthodes d’extension ont été entièrement testées lors de la première utilisation. Le copier/coller/modifier en vue de la réutilisation introduit souvent des bugs, notamment lors de la phase de modification. Une source commune de ces bugs est le traitement de file d’attente Azure (Azure Queue). Notez comment les méthodes d’extension obtiennent le message, le traitent, puis le suppriment. Bien souvent, les développeurs commettent l’erreur de supprimer le message lorsqu’ils le récupèrent, au lieu de le faire après le traitement. Cela peut créer le type de bugs qui survient très rarement, lorsque le processus Worker échoue à traiter le message. C’est le type de modification qui provoque des bugs plusieurs mois après.

Azure n’en est qu’à ses débuts et il est donc difficile de croire que nous connaissons les meilleures pratiques pour le développement dans cet environnement. Nous savons que nombre de nos idées sur les meilleures pratiques vont évoluer. C’est la raison pour laquelle je suis catégorique sur le fait de factoriser les algorithmes communs. Lorsque vous trouverez une meilleure approche pour résoudre un problème particulier, la correction interviendra à un seul emplacement. Si vous avez dupliqué ou, pire, dupliqué et modifié le code, il faudra apporter les mêmes corrections à de nombreux emplacements. Cela accroît d’autant les risques d’erreurs et d’omissions. C# vous propose une pléthore d’outils pour factoriser ces algorithmes communs et, au final, vous serez en mesure d’avoir une vision plus claire de vos algorithmes spécifiques.

Téléchargez cette ressource

Préparer l’entreprise aux technologies interconnectées

Préparer l’entreprise aux technologies interconnectées

Avec la « quatrième révolution industrielle », les environnements hyperconnectés entraînent de nouveaux risques en matière de sécurité. Découvrez, dans ce guide Kaspersky, comment faire face à cette nouvelle ère de vulnérabilité.

Tech - Par Renaud ROSSET - Publié le 24 mars 2011