Principes SOLID simplifiés (1/5): Responsabilité unique

Les principes S.O.L.I.D dans un contexte d’automatisation des tests

L’acronyme S.O.L.I.D a été inventé par Michael Feathers à partir des principes de programmation orientée objet identifiés par Robert Cecil Martin, Ces principes visent à rendre le code plus lisible, facile à maintenir, extensible, réutilisable et sans répétition.

L’automatisation des tests c’est un vrai projet de développement et lorsque les principes S.O.L.I.D ne sont pas appliqués le code devient difficile à maintenir ou à faire évoluer.

Dans cet article, je vous propose une explication du principe Responsabilité unique (Single Responsibility)

N’hésitez pas a découvrir les autres principes SOLID dans cette série d’articles:

Le principe de responsabilité unique stipule qu’une classe ne devrait avoir qu’une seule raison de changer et une seule responsabilité.

On comprend toujours mieux avec un exemple!

Un mauvais exemple:

public sealed class Customer
{
    public int Id { get; set; }
    public string Name { get; set; }
    public bool Active { get; set; }

    public void ActivateCustomer()
    {
        Active = true;
    }

    public void InactivateCustomer()
    {
        Active = false;
    }

    public void AddCustomer()
    {
        // Some implementation here (database) ...
    }

    public void DeleteCustomer()
    {
        // Some implementation here (database) ...
    }
}

Le code de l’exemple est incorrect car il a deux responsabilités, les règles de gestion et la persistance de la base de données.

Un bon exemple:

public sealed class Customer
{
    public int Id { get; set; }
    public string Name { get; set; }
    public bool Active { get; set; }

    public void ActivateCustomer()
    {
        Active = true;
    }
    public void InactivateCustomer()
    {
        Active = false;
    }
}
public sealed class CustomerRepository
{
    public void AddCustomer(Customer customer)
    {
        // Some implementation here (database) ...
    }

    public void DeleteCustomer(Customer customer)
    {
        // Some implementation here (database) ...
    }
}

Le code est correct car les responsabilités ont été réparties et chaque classe n’a qu’une seule raison de changer.

Si vous avez aimé cet article, n’hésitez pas à le partager !

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Automatisation

Jérôme Beaumont: le RPA appliqué au métier du test – les défis (3/3)

Les 4 défis de l’automatisation pour le test informatique Se lancer dans un projet d’automatisation nécessite de relever les 4 défis suivants : faire face au foisonnement technologique, comprendre les assistants virtuels, relever le défi de la maintenance, obtenir un feedback rapide Faire face au foisonnement technologique L’assistant virtuel doit être

Lire la suite »
testeur

Retour sur un article qui parle du métier de testeur

On parle de plus en plus du métier du test, notamment à travers des articles publié sur le web. C’est très bien et je m’en réjouis. Donner de la visibilité à ce métier est très important. Néanmoins avec l’arrivée de ces articles écrits par des non testeurs, arrivent certaines imprécisions.

Lire la suite »
processus

Une nouvelle vision pour livrer plus rapidement en prod – Ismail JAMIL

Les pratiques de tests doivent évoluer en fonction du contexte du projet, du produit, des contraintes de temps. Les standards du test préconisent : Adaptons notre stratégie en fonction du contexte en prenons en compte, l’aspect coût, qualité La principale occupation de tous les clients reste re répondre à cette question :

Lire la suite »