Formateur C#

Formatez votre code C# selon les conventions Microsoft .NET.

C# Source

Formatage

Options

C# Formaté

Guide complet : Conventions et formatage du code C#

Pourquoi le formatage C# est crucial dans l'écosystème .NET

Après plus de 20 ans d'évolution, C# est devenu l'un des langages les plus matures et les mieux outillés de l'industrie. Microsoft a défini des conventions de style très précises dans les .NET Framework Design Guidelines, et l'écosystème entier — de Visual Studio à Rider, de .NET CLI à Azure DevOps — s'articule autour de ces standards.

Un code C# bien formaté n'est pas qu'une question esthétique. Dans les projets d'entreprise typiques avec des dizaines de développeurs, une base de code cohérente accélère l'onboarding, simplifie les code reviews, et réduit les conflits Git. Les outils comme Roslyn analyzers détectent automatiquement les écarts aux conventions.

Le style Allman : la signature visuelle de C#

La caractéristique la plus visible du formatage C# est le style Allman pour les accolades : l'accolade ouvrante va sur sa propre ligne, alignée avec l'instruction qui la précède. C'est l'opposé du style K&R utilisé par Java et JavaScript.

Pourquoi ce choix ? Le style Allman offre une meilleure lisibilité verticale — on voit immédiatement où commence et finit chaque bloc. Dans un langage verbeux comme C# avec ses namespaces, classes, méthodes imbriquées, cette clarté est précieuse.

Conventions de nommage Microsoft

🏢 PascalCase pour le public

Classes, méthodes, propriétés, événements, namespaces, enums — tout ce qui est public utilise PascalCase. UserService, GetAllUsers(), IsEnabled. Aucune exception.

🔒 _camelCase pour le privé

Champs privés avec préfixe underscore : _userRepository, _logger. Distingue immédiatement les champs des paramètres et variables locales. Convention moderne recommandée.

📏 4 espaces d'indentation

Standard Visual Studio et .NET. Pas de tabs, pas de 2 espaces. La plupart des équipes C# suivent cette convention sans débat — c'est le défaut universel.

🆔 I pour les interfaces

Préfixe I obligatoire : IUserService, IDisposable, IEnumerable. Une des rares notations hongroises encore utilisées et universellement acceptées.

Fonctionnalités C# modernes et leur formatage

C# évolue rapidement depuis C# 7. Ces nouvelles syntaxes ont leurs propres conventions de formatage :

  • Expression-bodied members : public string FullName => $"{FirstName} {LastName}";. Utilisez => pour les propriétés en lecture seule et méthodes d'une ligne.
  • Pattern matching : if (user is { IsActive: true, Role: "Admin" }). Aligné sur plusieurs lignes si complexe.
  • Null-conditional ?. : user?.Address?.City. Chaînnage compact, pas d'espaces autour du ?.
  • Records : public record User(string Name, string Email);. Déclaration concise sur une ligne si simple.
  • Init-only setters : public string Name { get; init; }
  • File-scoped namespaces (C# 10) : namespace MyApp.Services; sans accolades, réduit l'indentation d'un niveau.
  • Primary constructors (C# 12) : public class UserService(IRepository repo)

Organisation des fichiers et membres

L'ordre recommandé des membres dans une classe C# :

  1. Constantes : private const int MaxRetries = 3;
  2. Champs statiques puis champs d'instance
  3. Constructeurs : du plus simple au plus complet
  4. Propriétés : publiques puis privées
  5. Méthodes publiques : dans l'ordre logique d'utilisation
  6. Méthodes privées : dans l'ordre d'appel

Pour les directives using, triez par : System d'abord, puis Microsoft, puis tiers, puis projet local. Chaque groupe séparé par une ligne vide.

Outils de formatage dans l'écosystème .NET

  • Visual Studio : Ctrl+K, Ctrl+D formate le document. Options configurables dans Tools > Options > Text Editor > C#.
  • dotnet format : dotnet format formate tout le projet selon les règles .editorconfig.
  • .editorconfig : Fichier standard pour partager les conventions d'équipe. Supporté par tous les IDEs.
  • Roslyn analyzers : StyleCop.Analyzers, Microsoft.CodeAnalysis.NetAnalyzers pour des warnings à la compilation.
  • Rider / ReSharper : Formatage avancé avec profils personnalisables.

Traitement 100% local : confidentialité garantie

Cet outil de formatage utilise js-beautify dans votre navigateur. Votre code C# ne quitte jamais votre machine — aucune requête serveur n'est effectuée. Idéal pour formater rapidement du code propriétaire, des snippets de production, ou du code contenant des informations sensibles.

Questions fréquentes sur le formatage C#

Allman vs K&R : quel style d'accolades pour C# ?

Allman est le standard C#. L'accolade ouvrante sur sa propre ligne :

  • C'est le défaut de Visual Studio depuis toujours
  • Tous les exemples Microsoft, la documentation .NET, les templates de projet l'utilisent
  • La quasi-totalité du code C# open source suit cette convention

Le style K&R (accolade sur la même ligne, comme Java) est techniquement valide mais très rare dans l'écosystème C#. Si vous rejoignez un projet existant, suivez sa convention. Pour un nouveau projet, Allman est le choix évident.

Dois-je préfixer les champs privés avec _ ?

Oui, c'est la convention moderne recommandée : _fieldName pour les champs privés.

Avantages :

  • Distinction immédiate entre champs, paramètres et variables locales
  • Plus besoin de this. pour désambiguïser dans les constructeurs
  • Roslyn analyzers et .editorconfig modernes l'imposent par défaut

L'ancienne convention (this.fieldName) est moins utilisée aujourd'hui mais reste valide dans certaines bases de code legacy.

Quand utiliser var vs type explicite ?

Le consensus moderne favorise var quand le type est évident :

  • Utilisez var : var user = new User();, var list = new List<string>();, var stream = File.OpenRead(path);
  • Type explicite : IEnumerable<User> users = GetUsers(); (le type de retour n'est pas évident), decimal price = 19.99m; (clarté sur les numériques)

La règle : si vous devez réfléchir au type en lisant le code, écrivez-le explicitement. Sinon, var réduit le bruit visuel.

Configurable : .editorconfig permet d'imposer var partout (csharp_style_var_for_built_in_types = true) ou l'inverse.

Comment organiser les membres d'une classe ?

Ordre recommandé (StyleCop SA1201) :

  1. Constantes (const)
  2. Champs statiques readonly puis mutables
  3. Champs d'instance
  4. Constructeurs
  5. Finaliseurs (rare)
  6. Délégués et événements
  7. Propriétés
  8. Indexeurs
  9. Méthodes
  10. Structs et classes imbriquées

Dans chaque catégorie : public, internal, protected internal, protected, private. StyleCop.Analyzers automatise cette vérification.

File-scoped namespaces : dois-je les utiliser ?

Oui, pour les nouveaux projets C# 10+. Au lieu de :

namespace MyApp.Services { public class UserService { ... } }

Écrivez :

namespace MyApp.Services; public class UserService { ... }

Avantages :

  • Un niveau d'indentation en moins dans tout le fichier
  • Code plus compact et lisible
  • C'est le nouveau défaut des templates .NET 6+

Pour les projets existants, la migration est optionnelle. dotnet format peut le faire automatiquement si configuré.

Comment configurer le formatage pour toute l'équipe ?

Utilisez un fichier .editorconfig à la racine du repository :

  • Supporté nativement par Visual Studio, VS Code, Rider
  • Versionné avec le code, tout le monde a les mêmes règles
  • Couvre indentation, nommage, style de code, sévérité des warnings

Ajoutez des analyzers dans le .csproj :

  • Microsoft.CodeAnalysis.NetAnalyzers (inclus par défaut .NET 5+)
  • StyleCop.Analyzers pour des règles plus strictes

Configurez CI/CD pour exécuter dotnet format --verify-no-changes et bloquer les PR mal formatées.

Quelle est la différence avec le formatage Visual Studio ?

Cet outil en ligne utilise js-beautify, une bibliothèque JavaScript généraliste. Elle produit un formatage correct mais moins sophistiqué que :

  • Visual Studio / Rider : Comprennent la sémantique C#, alignent les paramètres, gèrent les expression-bodied members, etc.
  • dotnet format : Utilise Roslyn, comprend parfaitement le langage

Cas d'usage de cet outil : formater rapidement un snippet, rendre lisible du code minifié ou mal formaté, sans ouvrir un IDE. Pour le formatage de production, préférez les outils natifs .NET.

Mes données sont-elles sécurisées avec cet outil ?

Oui, totalement. Tout le formatage s'effectue dans votre navigateur :

  • js-beautify s'exécute côté client en JavaScript
  • Aucune requête réseau n'envoie votre code
  • Votre code C# ne quitte jamais votre machine
  • L'outil fonctionne même hors ligne une fois la page chargée

Vérifiez dans l'onglet Réseau des DevTools : aucune donnée n'est transmise. Formatez du code propriétaire ou sensible en toute confiance.