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 *

Interview

Johann Gaggero: Test Manager

Bonjour, qui êtes-vous, quel est votre métier et quelles sont vos activités professionnelles ? Bonjour ! Je suis Johann Gaggero, Test Manager Omnicanal pour LVMH PCIS (Parfums & Cosmetic Information Services). PCIS est la DSI des 12 Maisons Parfums & Cosmétiques du groupe LVMH. A titre individuel, je suis en charge de

Lire la suite »
main tenant un logo de la ParisTestConf
conférence

La PTC, la conférence de la qualité pour toutes et tous

Mardi 25 mars dernier se tenait la 6ème édition de la ParisTestConf (PTC). J’ai eu le plaisir d’y participer pour la 2ème fois et, comme lors de ma première expérience, j’ai été conquis! Si je devais résumer mon expérience cela serait avec cette phrase (titre de l’article): la PTC, la

Lire la suite »
Couvertures

Le test par flot de contrôle

Dans cet article, je vous propose de vous présenter les techniques de test issues de l’analyse du flot de contrôle. Ces techniques, dites boites blanches, peuvent s’avérer très utiles pour construire un socle de test unitaire permettant de répondre aux exigences de couverture de code requises pour un produit logiciel.

Lire la suite »