dotnet-best-practices

Par github · awesome-copilot

Vérifier que le code .NET/C# respecte les bonnes pratiques pour la solution/le projet.

npx skills add https://github.com/github/awesome-copilot --skill dotnet-best-practices

Bonnes pratiques .NET/C

Votre tâche est de garantir que le code .NET/C# dans ${selection} respecte les bonnes pratiques spécifiques à cette solution/projet. Cela inclut :

Documentation et structure

  • Créer des commentaires de documentation XML exhaustifs pour toutes les classes publiques, interfaces, méthodes et propriétés
  • Inclure les descriptions de paramètres et les descriptions de valeurs de retour dans les commentaires XML
  • Respecter la structure d'espace de noms établie : {Core|Console|App|Service}.{Feature}

Modèles de conception et architecture

  • Utiliser la syntaxe du constructeur principal pour l'injection de dépendances (ex : public class MyClass(IDependency dependency))
  • Implémenter le modèle Command Handler avec des classes de base génériques (ex : CommandHandler<TOptions>)
  • Utiliser la ségrégation d'interface avec des conventions de nommage claires (préfixer les interfaces avec 'I')
  • Suivre le modèle Factory pour la création d'objets complexes.

Injection de dépendances et services

  • Utiliser l'injection de dépendances par constructeur avec vérifications null via ArgumentNullException
  • Enregistrer les services avec les durées de vie appropriées (Singleton, Scoped, Transient)
  • Utiliser les modèles Microsoft.Extensions.DependencyInjection
  • Implémenter des interfaces de service pour la testabilité

Gestion des ressources et localisation

  • Utiliser ResourceManager pour les messages localisés et les chaînes d'erreur
  • Séparer les fichiers de ressources LogMessages et ErrorMessages
  • Accéder aux ressources via _resourceManager.GetString("MessageKey")

Modèles Async/Await

  • Utiliser async/await pour toutes les opérations I/O et les tâches longues
  • Retourner Task ou Task<T> à partir des méthodes asynchrones
  • Utiliser ConfigureAwait(false) le cas échéant
  • Gérer correctement les exceptions asynchrones

Standards de test

  • Utiliser le framework MSTest avec FluentAssertions pour les assertions
  • Suivre le modèle AAA (Arrange, Act, Assert)
  • Utiliser Moq pour simuler les dépendances
  • Tester à la fois les scénarios de succès et d'échec
  • Inclure les tests de validation de paramètres null

Configuration et paramètres

  • Utiliser des classes de configuration fortement typées avec des annotations de données
  • Implémenter les attributs de validation (Required, NotEmptyOrWhitespace)
  • Utiliser la liaison IConfiguration pour les paramètres
  • Prendre en charge les fichiers de configuration appsettings.json

Semantic Kernel et intégration IA

  • Utiliser Microsoft.SemanticKernel pour les opérations IA
  • Implémenter la configuration correcte du noyau et l'enregistrement des services
  • Gérer les paramètres du modèle IA (ChatCompletion, Embedding, etc.)
  • Utiliser des modèles de sortie structurés pour des réponses IA fiables

Gestion des erreurs et journalisation

  • Utiliser la journalisation structurée avec Microsoft.Extensions.Logging
  • Inclure la journalisation avec portée avec un contexte significatif
  • Lever des exceptions spécifiques avec des messages descriptifs
  • Utiliser les blocs try-catch pour les scénarios d'échec prévus

Performance et sécurité

  • Utiliser les fonctionnalités C# 12+ et les optimisations .NET 8 le cas échéant
  • Implémenter la validation et l'assainissement appropriés des entrées
  • Utiliser des requêtes paramétrées pour les opérations de base de données
  • Suivre les pratiques de codage sécurisé pour les opérations IA/ML

Qualité du code

  • Assurer la conformité aux principes SOLID
  • Éviter la duplication de code par le biais de classes de base et d'utilitaires
  • Utiliser des noms significatifs qui reflètent les concepts du domaine
  • Garder les méthodes ciblées et cohésives
  • Implémenter les modèles d'élimination appropriés pour les ressources

Skills similaires