Passer au contenu du pied de page
Iron Academy Logo
Problèmes courants en C#

Maîtriser le principe DRY : Appliquer les Design Patterns en C# pour un code plus propre

Tim Corey
53 min 20 s

Les modèles de conception en C# sont des outils essentiels pour écrire un code efficace, réutilisable et facile à maintenir. Ces modèles fournissent des solutions standard aux problèmes courants de conception de logiciels, en encourageant les meilleures pratiques et en aidant les développeurs à éviter le code redondant. L'un des principes fondamentaux de l'application des modèles de conception est le principe DRY (Don't Repeat Yourself), qui consiste à minimiser les répétitions dans le code afin d'en améliorer la lisibilité et la maintenabilité.

Cet article s'inspire de la vidéo perspicace de Tim Corey, "Design Patterns : Don't Repeat Yourself in C#", qui plonge en profondeur dans le principe DRY et son application pratique pour créer un code plus propre et mieux organisé. En explorant les concepts et stratégies clés abordés dans la vidéo de Tim, cet article vise à vous fournir un guide complet pour mettre en œuvre efficacement le principe du modèle de conception DRY dans vos projets C#.

Introduction to the DRY Principle in C

Dans l'introduction, Tim Corey explique le principe DRY, qui signifie "Don't Repeat Yourself" (ne pas se répéter) Ce principe est un concept fondamental en programmation qui vise à éviter la redondance en s'assurant que chaque élément de connaissance ou de logique est représenté en un seul endroit du code. Tim illustre le principe à l'aide d'un exemple simple d'application WinForms avec un formulaire de tableau de bord. Le formulaire comprend des champs pour la saisie d'un prénom et d'un nom, ainsi qu'un bouton permettant de générer un numéro d'employé à partir de ces champs.

Identifier et anticiper les répétitions de code

À 0:53, Tim passe à l'identification et à l'anticipation des répétitions dans le code. Il utilise l'exemple de l'application WinForms pour montrer comment la répétition peut se produire, même lorsque les méthodes ne sont appelées qu'une seule fois. Dans l'application, la logique de génération de l'identifiant de l'employé consiste à extraire des sous-chaînes des champs de texte pour le prénom et le nom et à ajouter un code à trois chiffres à la fin.

Applying Design Patterns In Csharp For Cleaner Code 1 related to Identifier et anticiper les répétitions de code

Dans la capture d'écran ci-dessus (1:31), Tim démontre la fonctionnalité de l'application, en montrant comment elle génère un identifiant d'employé en combinant les quatre premières lettres du prénom et du nom de famille avec un code à trois chiffres. Il souligne que, bien que le code semble suivre le principe DRY parce qu'il ne répète pas explicitement la même logique, il y a des problèmes sous-jacents avec le modèle de répétition qui doivent être abordés.

À (1:51), il souligne que si le code semble simple, il n'adhère pas totalement au principe DRY car la logique de génération de l'identifiant de l'employé est étroitement liée à l'événement de clic du bouton. Cela signifie que si cette logique était nécessaire ailleurs dans le code client, par exemple lors du traitement d'une liste de nouveaux employés (3:58), le code devrait être répété ou adapté, ce qui entraînerait une redondance.

Créer des méthodes indépendantes et réutilisables

Dans ce segment, Tim Corey montre comment créer une méthode indépendante et réutilisable pour adhérer au principe DRY. Il commence par extraire la logique de génération d'un numéro d'employé du gestionnaire d'événements dans une méthode distincte. Ce refactoring implique la création d'une méthode privée nommée GenerateEmployeeID et le déplacement du code existant dans cette méthode (5:15). Le code révisé dans le gestionnaire d'événements appelle alors simplement cette méthode.

Etapes et exemples:

  1. Code initial: La logique de génération de l'identifiant de l'employé se trouvait directement dans le gestionnaire d'événement de clic d'un bouton.

    Applying Design Patterns In Csharp For Cleaner Code 2 related to Etapes et exemples:

  2. <Tim améliore la méthode en la rendant plus flexible. Au lieu de se fier à des éléments d'interface spécifiques, la méthode accepte désormais firstName et lastName comme paramètres et retourne l'ID généré. Cette modification permet d'utiliser la méthode dans différents contextes et éléments d'interface utilisateur :

    private string GenerateEmployeeID(string firstName, string lastName)
    {
      string employeeID = firstName.Substring(0, 4) + lastName.Substring(0, 4) + DateTime.Now.Millisecond.ToString();
      return employeeID;
    }
    private string GenerateEmployeeID(string firstName, string lastName)
    {
      string employeeID = firstName.Substring(0, 4) + lastName.Substring(0, 4) + DateTime.Now.Millisecond.ToString();
      return employeeID;
    }

    Tim montre ensuite comment cette méthode est appelée à partir de l'événement de clic :

    employeeIdText.Text = GenerateEmployeeID(firstNameText.Text, lastNameText.Text);
    employeeIdText.Text = GenerateEmployeeID(firstNameText.Text, lastNameText.Text);

    Il note également que cette méthode peut désormais être utilisée dans d'autres parties de l'application, par exemple pour traiter des fichiers CSV contenant plusieurs enregistrements d'employés, sans avoir à répéter le code.

Construire et utiliser une bibliothèque de classes

Tim Corey explore ensuite le concept de bibliothèque de classes afin d'améliorer la réutilisation et la maintenabilité du code. Il illustre comment encapsuler la méthode GenerateEmployeeID dans un objet de bibliothèque de classes, qui peut être utilisé dans plusieurs projets.

À (8:00), Tim explique que la conception évolue constamment en fonction des exigences de l'utilisateur ou des politiques de l'entreprise afin de rendre le site plus interactif grâce à des graphiques et des animations. Il introduit donc un projet WPF dans la solution avec des champs exacts et un bouton pour générer l'identifiant de l'employé.

Tim, à 9:15, plaide en faveur de l'utilisation d'une bibliothèque de classes en disant que si nous voulons éviter de nous répéter, le code aurait été copié-collé dans le nouveau projet WPF. Ainsi, pour rester dans le DRY, nous devons créer des classes dans une bibliothèque de classes.

Etapes et exemples:

  1. Création de la bibliothèque de classes:

    • Tim, à (9:47), crée un nouveau projet de bibliothèque de classes dans .NET Framework, qu'il nomme DRYDemoLibrary.

    • À l'intérieur de cette bibliothèque, il définit une classe publique EmployeeProcessor et déplace la méthode GenerateEmployeeID dans cette classe :

      public class EmployeeProcessor
      {
       public string GenerateEmployeeID(string firstName, string lastName)
       {
          string employeeID = firstName.Substring(0, 4) + lastName.Substring(0, 4) + DateTime.Now.Millisecond.ToString();
          return employeeID;
       }
      }
      public class EmployeeProcessor
      {
       public string GenerateEmployeeID(string firstName, string lastName)
       {
          string employeeID = firstName.Substring(0, 4) + lastName.Substring(0, 4) + DateTime.Now.Millisecond.ToString();
          return employeeID;
       }
      }
  2. Utilisation de la bibliothèque de classes dans les projets:

    • Dans ses projets WinForms (13:18) et WPF (14:00), Tim ajoute une référence à la bibliothèque de classes DRYDemoLibrary.

    • Il remplace ensuite l'ancien code par des appels à la méthode GenerateEmployeeID depuis la bibliothèque de classes :

      EmployeeProcessor processor = new EmployeeProcessor();
      employeeIDText.Text = processor.GenerateEmployeeID(firstNameText.Text, lastNameText.Text);
      EmployeeProcessor processor = new EmployeeProcessor();
      employeeIDText.Text = processor.GenerateEmployeeID(firstNameText.Text, lastNameText.Text);
    • Cette approche élimine la redondance, puisque la méthode est désormais conservée en un seul endroit. Tim démontre que la même bibliothèque de classes peut être utilisée dans différents cadres d'interface utilisateur (WinForms et WPF) sans répéter le code.
  3. Avantages:

    • <En centralisant la logique dans une bibliothèque de classes, Tim garantit que les modifications apportées à la logique (par exemple, les corrections de bogues) sont appliquées de manière uniforme dans tous les projets.

    • Maintenance réduite: Les modifications apportées à la méthode ne doivent être effectuées que dans la bibliothèque de classes, ce qui permet d'éviter les incohérences et de réduire les frais généraux de maintenance.

Intégrer la bibliothèque de classes dans plusieurs projets

Tim Corey continue d'explorer la manière d'utiliser la bibliothèque de classes DRYDemoLibrary dans différents types de projets, en se concentrant plus particulièrement sur l'intégration de la bibliothèque dans une nouvelle application console. Il s'agit de montrer comment les fonctionnalités de la bibliothèque peuvent être réutilisées dans diverses applications, et pas seulement dans une seule instance ou au sein d'une même solution.

Etapes et exemples:

  1. Création d'une nouvelle solution et d'un nouveau projet:

    • Tim, à (17:29), commence par créer une nouvelle solution pour une application console, en simulant un scénario dans lequel vous pourriez avoir besoin d'utiliser la bibliothèque DRYDemo dans un autre type de projet, comme un service Windows ou une application console.

    • Il nomme le nouveau projet ConsoleUI et montre comment configurer une application console de base.

      class Program
      {
       static void Main(string[] args)
       {
          Console.ReadLine();
       }
      }
      class Program
      {
       static void Main(string[] args)
       {
          Console.ReadLine();
       }
      }
  2. Ajouter une référence à la bibliothèque de classes:

    • Tim explique comment ajouter une référence à la DLL DRYDemoLibrary dans le nouveau projet. Il s'agit de naviguer jusqu'au fichier DLL dans le dossier bin du projet de bibliothèque de classes et de l'ajouter à l'application console.

      using DRYDemoLibrary;
      using DRYDemoLibrary;
    • Une fois la référence ajoutée, Tim (19:24) utilise la classe EmployeeProcessor de la bibliothèque pour générer un identifiant d'employé à partir des données saisies par l'utilisateur.

      Console.WriteLine("What is your first name?");
      string firstName = Console.ReadLine();
      
      Console.WriteLine("What is your last name?");
      string lastName = Console.ReadLine();
      
      EmployeeProcessor processor = new EmployeeProcessor();
      string employeeID = processor.GenerateEmployeeID(firstName, lastName);
      
      Console.WriteLine($"Your employee ID is {employeeID}");
      Console.WriteLine("What is your first name?");
      string firstName = Console.ReadLine();
      
      Console.WriteLine("What is your last name?");
      string lastName = Console.ReadLine();
      
      EmployeeProcessor processor = new EmployeeProcessor();
      string employeeID = processor.GenerateEmployeeID(firstName, lastName);
      
      Console.WriteLine($"Your employee ID is {employeeID}");
  3. Exécution de l'application console:

    • Tim montre l'exécution de l'application console pour montrer qu'elle génère avec succès l'identifiant de l'employé à l'aide de la bibliothèque. Cela confirme que le même code de la bibliothèque de classes peut être réutilisé dans différents projets.

      Applying Design Patterns In Csharp For Cleaner Code 3 related to Etapes et exemples:

  4. Mise à jour de la DLL:

    • Tim mentionne brièvement que si la DLL change, vous pouvez la mettre à jour dans les projets qui y font référence. Il note que, bien que cette vidéo ne l'aborde pas en détail, l'utilisation des packages NuGet est une approche recommandée pour la gestion et la mise à jour des DLL dans plusieurs projets.

Mise à jour des DLL et gestion des packages NuGet

Tim Corey présente brièvement le concept d'utilisation des packages NuGet pour la gestion et la mise à jour des bibliothèques de classes. Cette approche offre une solution plus évolutive pour gérer les dépendances et les mises à jour, en particulier dans les grands projets ou organisations.

Points Clés :

  1. Création d'un package NuGet:

    • Au lieu de gérer manuellement les fichiers DLL, Tim suggère de créer un package NuGet pour la bibliothèque de classes. Il s'agit de conditionner la DLL dans un package NuGet et de la télécharger sur un serveur NuGet (privé ou public).
  2. Mise à jour des paquets:

    • En utilisant un package NuGet, vous pouvez mettre à jour la bibliothèque dans tous les projets qui y font référence en mettant simplement à jour la version du package. Cela permet de garantir la cohérence et de réduire le risque de décalage entre les versions ou d'absence de mises à jour.
  3. Avantages:

    • Gestion centralisée : Les packages NuGet constituent un moyen centralisé de gérer les versions et les dépendances des bibliothèques.

    • Facilité des mises à jour: La mise à jour de la bibliothèque dans le cadre de plusieurs projets devient plus facile et plus fiable.

    • Intégration: NuGet s'intègre à divers outils et environnements de développement, rationalisant ainsi le processus de gestion des dépendances des bibliothèques.

Mise en œuvre de la méthode DRY dans les tests unitaires : Un cours accéléré

Dans ce segment, Tim Corey montre comment l'application du principe DRY (Don't Repeat Yourself) peut améliorer les tests unitaires. Il montre comment mettre en œuvre les principes DRY dans le travail de développement, en se concentrant particulièrement sur les tests unitaires.

Configuration du test initial

Tim commence par exécuter un test unitaire qui échoue actuellement en raison d'un bogue dans la DLL. Il souligne l'importance des tests unitaires pour identifier les problèmes, même lorsque le code se trouve en dehors de la solution principale. Le code s'attendait à une entrée de 4 lettres, mais Tim a transmis un prénom de 3 lettres qui se plante dans le fichier DLL même s'il n'est pas directement inclus dans la solution.

Applying Design Patterns In Csharp For Cleaner Code 4 related to Configuration du test initial

Refacturer le code pour résoudre les bogues

Pour résoudre le problème de la gestion des prénoms, Tim remanie le code. Il explique comment la méthode DRY peut être appliquée au développement en créant un nouveau projet de bibliothèque de classes (23:50). Cette approche permet de s'assurer que les modifications apportées à plusieurs objets peuvent être effectuées une seule fois et testées efficacement sans répéter les corrections.

Applying Design Patterns In Csharp For Cleaner Code 5 related to Refacturer le code pour résoudre les bogues

Ajouter des tests unitaires

Tim introduit une nouvelle classe de test, EmployeeProcessorTest, dans le projet de bibliothèque de classes et met en place des tests unitaires à l'aide de XUnit. Il montre comment créer une méthode de test pour générer des identifiants d'employés et discute de l'importance de simuler des dépendances au lieu de se fier à des valeurs réelles.

Applying Design Patterns In Csharp For Cleaner Code 6 related to Ajouter des tests unitaires

Écrire une méthode de test

Tim écrit une méthode de test unitaire appelée GenerateEmployeeID_ShouldCalculate. Il met en place une théorie avec des données en ligne pour tester différents scénarios, en s'assurant que la méthode renvoie les résultats escomptés. Il explique également comment utiliser Assert.Equal pour vérifier la sortie.

public class EmployeeProcessorTest
{
   [Theory]
   [InlineData("Timothy", "Corey", "TimoCore")]
   public void GenerateEmployeeID_ShouldCalculate(string firstName, string lastName, string expectedStart)
   {
      // Arrange
      var processor = new EmployeeProcessor();

      // Act
      var actualStart = processor.GenerateEmployeeID(firstName, lastName).Substring(0, 8);

      // Assert
      Assert.Equal(expectedStart, actualStart);
   }
}
public class EmployeeProcessorTest
{
   [Theory]
   [InlineData("Timothy", "Corey", "TimoCore")]
   public void GenerateEmployeeID_ShouldCalculate(string firstName, string lastName, string expectedStart)
   {
      // Arrange
      var processor = new EmployeeProcessor();

      // Act
      var actualStart = processor.GenerateEmployeeID(firstName, lastName).Substring(0, 8);

      // Assert
      Assert.Equal(expectedStart, actualStart);
   }
}

Exécution du test unitaire

Tim insiste sur l'importance d'utiliser des données dynamiques, telles que des valeurs de date et d'heure, pour contrôler les conditions et les résultats des tests. Il aborde la difficulté de travailler avec des chaînes dynamiques et la manière de tester différents scénarios à l'aide de valeurs contrôlées. Il exécute ensuite le test unitaire mais avant cela, il ajoute deux packages NuGet nécessaires pour exécuter les tests : xunit.runner.console et xunit.runner.visualstudio.

Applying Design Patterns In Csharp For Cleaner Code 7 related to Exécution du test unitaire

Après avoir exécuté avec succès tous les tests pour une donnée en ligne, la sortie se présente comme suit :

Applying Design Patterns In Csharp For Cleaner Code 8 related to Exécution du test unitaire

Maintenant à (31:30), Tim a ajouté une autre donnée inline et a changé le second paramètre de sous-chaîne en expectedStart.Length :

public class EmployeeProcessorTest
{
   [Theory]
   [InlineData("Timothy", "Corey", "TimoCore")]
   [InlineData("Tim", "Corey", "TimCore")]
   public void GenerateEmployeeID_ShouldCalculate(string firstName, string lastName, string expectedStart)
   {
      var processor = new EmployeeProcessor();
      var actualStart = processor.GenerateEmployeeID(firstName, lastName).Substring(0, expectedStart.Length);
      Assert.Equal(expectedStart, actualStart);
   }
}
public class EmployeeProcessorTest
{
   [Theory]
   [InlineData("Timothy", "Corey", "TimoCore")]
   [InlineData("Tim", "Corey", "TimCore")]
   public void GenerateEmployeeID_ShouldCalculate(string firstName, string lastName, string expectedStart)
   {
      var processor = new EmployeeProcessor();
      var actualStart = processor.GenerateEmployeeID(firstName, lastName).Substring(0, expectedStart.Length);
      Assert.Equal(expectedStart, actualStart);
   }
}

Après avoir réexécuté le test unitaire à (32:05), le test s'est interrompu avec la deuxième théorie :

Applying Design Patterns In Csharp For Cleaner Code 9 related to Exécution du test unitaire

Améliorer le code avec des méthodes privées

Pour adhérer au principe DRY, Tim refactorise le code davantage en créant une méthode privée GetPartOfName dans la classe actuelle EmployeeProcessor sous DRYDemoLibrary. Cette méthode permet d'extraire des parties d'un nom, ce qui améliore la réutilisation et la lisibilité du code. Tim a apporté les modifications suivantes :

public string GenerateEmployeeID(string firstName, string lastName)
{
   string employeeID = $@"{GetPartOfName(firstName, 4)}{GetPartOfName(lastName, 4)}{DateTime.Now.Millisecond.ToString()}";
   return employeeID;
}

private string GetPartOfName(string name, int numberOfCharacters)
{
   string output = name;

   if (name.Length > numberOfCharacters)
   {
      output = name.Substring(0, numberOfCharacters);
   }

   return output;
}
public string GenerateEmployeeID(string firstName, string lastName)
{
   string employeeID = $@"{GetPartOfName(firstName, 4)}{GetPartOfName(lastName, 4)}{DateTime.Now.Millisecond.ToString()}";
   return employeeID;
}

private string GetPartOfName(string name, int numberOfCharacters)
{
   string output = name;

   if (name.Length > numberOfCharacters)
   {
      output = name.Substring(0, numberOfCharacters);
   }

   return output;
}

Mise à jour des tests unitaires

Tim met à jour les tests unitaires pour refléter les changements apportés au code, tels que la modification de la longueur attendue des sous-chaînes. Il explique comment l'exécution de ces tests permet d'identifier rapidement les problèmes et de valider que le code répond aux nouvelles exigences. Tim ajoute de nouvelles théories et exécute ensuite les tests unitaires pour vérifier si les résultats sont conformes aux attentes :

Applying Design Patterns In Csharp For Cleaner Code 10 related to Mise à jour des tests unitaires

Expansion de la polyvalence avec les bibliothèques .NET Standard

Création d'une bibliothèque .NET Standard

Pour améliorer la polyvalence de votre bibliothèque de classes, Tim Corey recommande de passer d'une bibliothèque de classes .NET Framework à une bibliothèque de classes .NET Standard. Ce changement permet à la bibliothèque d'être compatible avec différentes plateformes, notamment :

  • Plateformes Windows : Applications WinForms, WPF et Console
  • Cross-Platform : .NET Core, Xamarin (pour iOS et Android), Linux et macOS

Étapes pour créer une bibliothèque .NET Standard:

  1. Ajouter un nouveau projet : Cliquez avec le bouton droit de la souris sur votre solution et choisissez d'ajouter un nouveau projet.
  2. Sélectionnez .NET Standard : au lieu de sélectionner une bibliothèque de classes .NET Framework, choisissez .NET Standard. Ce type de bibliothèque prend en charge un large éventail de plateformes.

    Applying Design Patterns In Csharp For Cleaner Code 11 related to Étapes pour créer une bibliothèque .NET Standard:

  3. Migration de code : Copiez et collez votre code existant (par exemple, la classe EmployeeProcessor) dans la nouvelle bibliothèque .NET Standard. Ce processus peut impliquer des ajustements mineurs, mais la logique de base reste cohérente.

En convertissant à .NET Standard, vous rendez votre bibliothèque accessible à partir de diverses plateformes, ce qui réduit la répétition du code dans différents types d'applications et économise les efforts de développement.

Éviter les répétitions dans le code et les tests

Réduire les répétitions dans le développement

Tim Corey souligne qu'en adoptant une bibliothèque .NET Standard, vous minimisez la répétition du code non seulement dans votre base de code, mais aussi dans le processus de développement. Au lieu de dupliquer le code dans différents projets spécifiques à une plateforme, vous le centralisez dans une bibliothèque unique qui fonctionne dans plusieurs environnements.

Avantages:

  • Base de code unifiée : Une base de code unique pour différentes plateformes réduit les efforts nécessaires pour maintenir et mettre à jour votre code.
  • Tests simplifiés : Avec une bibliothèque .NET Standard, vous pouvez écrire des tests unitaires une seule fois et vous assurer qu'ils s'appliquent à toutes les plateformes prises en charge.

<Tim présente les tests unitaires comme un moyen de réduire les efforts et les répétitions. Les tests automatisés vérifient l'exactitude de votre code sans qu'il soit nécessaire de tester manuellement chaque itération de l'application.

Tips on Applying DRY : Knowing When to Stop (Conseils sur l'application de la méthode DRY : savoir quand s'arrêter)

Tim Corey souligne que si le respect du principe DRY (Don't Repeat Yourself) est essentiel pour écrire un code facile à maintenir, il est important de savoir quand et où l'appliquer. Chaque scénario n'exige pas la même approche. Voici donc quelques conseils pratiques inspirés des réflexions de Tim :

  1. Éviter le code dans le code-behind et l'interface utilisateur : Tim déconseille de placer la logique directement dans les fichiers de code-behind ou les interfaces utilisateur. Par exemple, la logique commerciale ne doit pas être intégrée dans un formulaire ou dans un événement de clic sur un bouton. Il est préférable de conserver cette logique dans des classes ou des bibliothèques distinctes. Cette séparation permet de maintenir une architecture propre et de rendre votre code plus réutilisable dans différentes interfaces utilisateur.

  2. <Exploitez les bibliothèques .NET Standard : Lors de la création de bibliothèques, Tim suggère d'utiliser, dans la mesure du possible, les bibliothèques .NET Standard plutôt que les bibliothèques .NET Framework. les bibliothèques .NET Standard sont plus polyvalentes, permettant à votre code d'être utilisé sur différentes plateformes, notamment .NET Core, Xamarin, etc. Cette approche permet de réduire la duplication du code et d'en améliorer la portabilité.

  3. Séparer le code spécifique à la plateforme : Certains codes peuvent ne pas trouver leur place dans une bibliothèque .NET Standard en raison d'exigences spécifiques à la plateforme, telles que le traitement des fichiers ou la gestion de la configuration. Tim recommande de créer deux bibliothèques dans de tels cas : une pour le code .NET Standard et une autre pour le code spécifique à la plateforme. De cette façon, vous pouvez toujours réutiliser la logique de base tout en tenant compte des besoins spécifiques à chaque plateforme.

  4. Mettre l'accent sur les tests unitaires : Tim encourage vivement la rédaction de tests unitaires pour votre code. Les tests unitaires permettent d'identifier rapidement les bogues et de s'assurer que votre code se comporte comme prévu. Ils peuvent accélérer considérablement le processus de débogage, car ils permettent de vérifier rapidement les modifications sans avoir à tester manuellement l'ensemble de l'application.

  5. <Pensez à la taille du projet : Pour les très petits projets ou les projets expérimentaux, Tim reconnaît qu'il n'est peut-être pas nécessaire de créer des bibliothèques distinctes et des tests unitaires approfondis. Toutefois, pour les applications de production, il est conseillé de commencer par une architecture propre et des tests unitaires, car les petits projets grandissent et évoluent souvent avec le temps.

En suivant ces conseils, vous pouvez appliquer efficacement le principe DRY tout en conciliant la nécessité de réutiliser le code et la maintenabilité avec des considérations pratiques.

Conclusion

La maîtrise du principe DRY grâce aux modèles de conception est essentielle pour écrire un code C# propre et facile à maintenir. Comme l'a démontré Tim Corey, l'application efficace de la méthode DRY implique la création de méthodes réutilisables, l'exploitation des bibliothèques de classes et l'adoption de la norme .NET Standard pour une plus grande compatibilité. En comprenant quand et comment appliquer ces pratiques, vous pouvez améliorer de manière significative la qualité et la flexibilité de votre code.

Pour en savoir plus, consultez la vidéo de Tim Corey sur ce sujet ici. Pour vous tenir au courant des derniers contenus de Tim, visitez son chaîne YouTube.

Hero Worlddot related to Maîtriser le principe DRY : Appliquer les Design Patterns en C# pour un code plus propre
Hero Affiliate related to Maîtriser le principe DRY : Appliquer les Design Patterns en C# pour un code plus propre

Gagnez plus en partageant ce que vous aimez

Vous créez du contenu pour les développeurs travaillant avec .NET, C#, Java, Python ou Node.js ? Transformez votre expertise en revenu supplémentaire !

Équipe de soutien Iron

Nous sommes en ligne 24 heures sur 24, 5 jours sur 7.
Chat
Email
Appelez-moi