Code review en C# : quoi vérifier et comment donner du feedback

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Code review en C# : quoi vérifier et comment donner un retour



Le code review n'est pas une simple formalité, mais l'un des processus clés garantissant la qualité du code. C'est particulièrement important pour les projets en C# et .NET, où la haute performance, la lisibilité et la conformité aux normes modernes jouent un rôle crucial. Dans cet article, nous allons voir sur quoi se concentrer lors de la revue de code C# et comment donner un retour utile et constructif.



1. Architecture et respect des principes SOLID

Avant d'examiner les lignes de code spécifiques, évaluez l'architecture globale. En C#, c'est particulièrement important en raison de l'utilisation intensive de la POO.

  • Single Responsibility : chaque classe et méthode doit résoudre une seule tâche. Si une méthode en fait trop, c'est une raison pour une revue.
  • Open/Closed : vérifiez si la fonctionnalité peut être étendue sans modifier le code existant (par exemple, via des interfaces ou des classes abstraites).
  • Dependency Injection : dans .NET Core/5+, l'injection de dépendances est la norme. Assurez-vous que les dépendances sont transmises via le constructeur, et non créées à l'intérieur de la classe.


// Mauvais : violation du SRP et de la DIpublic class OrderService{    private readonly SqlConnection _connection = new SqlConnection("...");        public void ProcessOrder(Order order)    {        // Logique de validation        // Logique de sauvegarde en BDD        // Logique d'envoi d'email    }}

// Bon : séparation en services et DIpublic class OrderService{ private readonly IOrderRepository _orderRepository; private readonly IEmailService _emailService;

public OrderService(IOrderRepository orderRepository, IEmailService emailService) { _orderRepository = orderRepository; _emailService = emailService; }

public void ProcessOrder(Order order) { _orderRepository.Save(order); _emailService.SendConfirmation(order); }}


2. Sécurité et gestion des erreurs

La sécurité est une partie critique de toute application en C#. Faites attention aux aspects suivants :

  • Injection SQL : utilisez des requêtes paramétrées ou Entity Framework, plutôt que la concaténation de chaînes.
  • Exceptions : n'avalez pas les exceptions avec des blocs catch vides. Enregistrez les erreurs et utilisez finally pour libérer les ressources.
  • Sécurité null : en C# 8+, utilisez les types de référence nullables. Vérifiez les arguments des méthodes pour null.


// Mauvais : vulnérabilité aux injections SQLvar query = "SELECT * FROM Users WHERE Name = '" + userName + "'";

// Bon : requête paramétréevar command = new SqlCommand("SELECT * FROM Users WHERE Name = @name", connection);command.Parameters.AddWithValue("@name", userName);


Vérifiez également que l'application gère correctement les exceptions aux limites du système (par exemple, dans les contrôleurs ASP.NET Core).



3. Performance et gestion de la mémoire

C# est un langage avec gestion automatique de la mémoire, mais cela ne signifie pas que vous pouvez oublier la performance. Lors de la revue, faites attention à :

  • Requêtes LINQ : évitez les itérations multiples sur les collections. Par exemple, .ToList() après chaque .Where() peut considérablement ralentir le travail.
  • Asynchronisme : utilisez async/await pour les opérations d'E/S, mais n'abusez pas de .Result ou .Wait() — cela peut provoquer un deadlock.
  • Pool d'objets : pour les objets lourds (par exemple, les connexions à la BDD), utilisez le pooling plutôt que de les créer à chaque fois.


// Mauvais : itérations multiplesvar filtered = items.Where(x => x.IsActive).ToList();var sorted = filtered.OrderBy(x => x.Name).ToList                

Blogs

Book Recommendations