Guide des bonnes pratiques : Namespaces en .NET 9
Vue d'ensemble
Les namespaces organisent le code en groupes logiques et évitent les conflits de noms. En .NET 9, la pratique moderne privilégie les file-scoped namespaces (déclaration au niveau du fichier). Cette approche moderne réduit l'indentation, améliore la lisibilité et suit les standards actuels de .NET 9.
✅ Ce qu'il FAUT faire
File-scoped namespace (Recommandé)
// ✅ Moderne et concis - un seul namespace par fichier
namespace NC.CAM.App.PortailClients.Domain;
public class Liasse
{
public int Id { get; set; }
public string Nom { get; set; }
}
public class PieceAttendue
{
public int Id { get; set; }
public string Type { get; set; }
}
Organisation avec usings globaux
// ✅ Dans GlobalUsings.cs
global using System;
global using System.Collections.Generic;
global using System.Linq;
// ✅ Dans votre fichier .cs
namespace NC.CAM.App.PortailClients.Application;
public class LiasseAppService
{
// Pas besoin de répéter les usings standards
}
Conventions de nommage
Structure recommandée
// ✅ Format : [Entreprise].[Produit].[Module].[SousModule]
namespace NC.CAM.App.PortailClients.EntityFrameworkCore;
public class PortailClientsDbContext : DbContext
{
// Code...
}
Alignement avec la structure des dossiers
// ✅ Fichier : src/NC.CAM.App.PortailClients.Domain/Entities/Liasse.cs
namespace NC.CAM.App.PortailClients.Domain.Entities;
public class Liasse
{
// Le namespace reflète la structure physique
}
❌ Ce qu'il ne faut PAS faire
Namespace traditionnel avec accolades imbriquées
// ❌ Ancien style - ajoute un niveau d'indentation inutile
namespace NC.CAM.App.PortailClients.Domain
{
public class Liasse
{
public int Id { get; set; }
public string Nom { get; set; }
}
public class PieceAttendue
{
public int Id { get; set; }
public string Type { get; set; }
}
}
Résumé des bonnes pratiques
-
Toujours utiliser file-scoped namespaces (
;à la fin) -
Un seul namespace par fichier
-
Aligner le namespace avec la structure des dossiers
-
Utiliser les global usings pour les imports communs
-
Suivre la convention :
[Entreprise].[Produit].[Module] -
Éviter les namespaces imbriqués
Configuration .editorconfig
# Forcer l'utilisation de file-scoped namespaces
[*.cs]
csharp_style_namespace_declarations = file_scoped:warning