Contexte
Il y a toujours une partie de code répétitive à chaque projet. Il y a même du code que l’on retrouve dans chaque projet. Plutôt que repartir d’une solution from scratch, bien souvent nous dupliquons le code d’un ancien projet. En intégrant ces fichiers dans le repository Git (exemple : /tools/snippets/), puis en intégrant ce dossier dans les settings de Visual Studio, les membres de l’équipe partagent les mêmes bases et encouragent la création de nouveaux.
Un snippet, c'est quoi ?
Il s'agit d'un extrait de code source, un template de code. Son but est d’avoir à portée de main du code prêt à l’emploi qui a déjà été éprouvé. Vous en utilisez déjà sans même vous en rendre compte si vous ajoutez des #region dans votre code, si vous ajoutez des propriétés (prop), si vous faites tabulation après un if ou après un switch case.
Dans cette partie, nous allons voir deux catégories de snippets : les snippets de refactorisation et les snippets utilitaires.
Quand les utiliser ?
Dès que vous écrivez du code similaire de plus de 2 lignes plusieurs fois, la question se pose.
Un template de code bien écrit fait gagner du temps et évite de faire des copier/coller d'un code legacy.
Par exemple, sur un projet de plusieurs années, il est probable que les derniers modules n'aient plus la même structure que les premiers. Les raisons peuvent être variées : utilisation de classe de base différente, changement de syntaxe, évolution du langage (par exemple, activation de "nullable" dans le csproj).
Afin de mieux discerner le potentiel des snippets, peut-être devrions nous les classer en quelques catégories.
Snippets utilitaires
Il s’agit de tout le code qui peut être utile dans plus d’un projet. Tout simplement. Nous pouvons donc ajouter des snippets qui automatisent l’ajout de helpers, de méthodes d’extension, classes de base, de code que l’on rencontre dans la quasi-totalité des projets.
Exemple de snippet
Dans le snippet suivant, nous avons modifié le code du snippet propfull de Visual Studio directement pour utiliser la syntaxe « expression body » plutôt que la version classique « block body » (avec accolades).

Exemple de snippet pour faciliter l’ajout de nouvelle propriété bindable à un composant MAUI !

Snippets refactorisation
Ceux de refactorisation sont des extraits de code qui se répètent plusieurs fois dans un projet. Parfois du code factorisé portant des traces de code métier peut être retravaillé pour devenir générique et intégrer la catégorie de snippet utilitaire.
Il peut être intéressant d’ajouter un préfixe à vos snippets, par exemple xx (dans la balise <Shortcut>xxShortCut</Shortcut>) et de les nommer de façon à les grouper. De la même manière, il vaut mieux commencer le nom de vos fichiers par catégorie.
Exemple de snippet spécifique à un projet : avec ces snippets, il est facile d’ajouter des query, des commandes, des tests unitaires. Et tout cela est accessible et maintenu par l’ensemble des personnes ayant accès au projet. Vous pouvez constater que le nommage permet de retrouver facilement le code par domaine.

Intégrer les snippets dans Visual Studio
Il faut commencer par identifier l’endroit où résident les snippets. (Note : cette procédure doit être réalisée par chaque personne contribuant au projet et bénéficier des snippets mis à disposition)

Ensuite, depuis Visual Studio, soit
-
Tools > Code Snippet Manager
-
CTRL + K, CTRL + B

Il ne reste qu’à ajouter le chemin des snippets. Parfois, il faut redémarrer Visual Studio pour que tous soient bien intégrés.
Pour terminer, Atawiz vous donne des exemples de snippets pouvant vous servir de base :
- snippets_propsetraise.snippet
- snippets_propset.snippet
- snippets_propfull.snippet
- snippets_propbind.snippet
- snippets_pp_region.snippet
- snippets_entity_configuration.snippet
On espère que vous avez apprécié cet article. Prochainement, on vous parlera de méthode d’extension !
Alors à bientôt sur https://blog.atawiz.fr