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

Les flaky tests

Préambule Les flaky tests… ce nom peut vous être inconnu mais sachez qu’il fait faire des cauchemars à de nombreux testeurs! Car les flaky tests peuvent vite devenir la pire hantise des professionnels de la qualité… En effet, les flaky tests retournent l’outil principal de mesure de la qualité (les

Lire la suite »
conférence

[JFTL] Retours de participants

En juillet dernier la taverne vous proposait un webinaire proposant des retours sur la JFTL. Lors de cet événement nous avons lancé un sondage pour avoir les vôtres. Cet article a pour but de restituer ces retours en s’appuyant sur le sondage mais aussi et surtout sur les retours directs

Lire la suite »
Campagnes

Vous avez dit non régression ! – Arnaud Verin

1.1.    Un concept connu mais qui reste néanmoins assez flou La non régression est l’un des éléments principaux du test logiciel. C’est aussi une de ses particularités. Nombreux sont ceux qui ont manipulé ce concept un jour, pour autant, tous n’en partagent pas la même vision : pour certains, il s’agit

Lire la suite »