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 *

Logo de JIRA aux côté d'un puzzle représentant un crâne
Agilité

JIRA et l’Agilité : des dysfonctionnements chroniques

Etant amené à déployer des méthodes industrielles de test, et souvent dans un cadre agile, j’ai été confronté à devoir travailler avec JIRA, soit comme simple bugtracker, soit plus souvent pour implémenter une méthode agile, le cadre SCRUM. Ces situations réccurentes m’ont ainsi amené à réaliser des audits du processus

Lire la suite »
Quadrants des tests. Il sont décomposé en 4 quadrants, chacun avec 2 objectifs répartis entre équipe ou produit et technique ou métier
Agilité

[ISTQB ] Quadrants des tests Agile

Ma découverte des quadrants En novembre 2015 je suivais une formation ISTQB Agile dans le but d’obtenir ma certification. J’attendais beaucoup de cette formation, je souhaitais y découvrir: J’avoue avoir été assez déçu à l’issue de cette formation. Mon principal reproche à l’époque était que j’avais trouvé que cette formation

Lire la suite »
Automatisation

Que faut-il automatiser ?

Il faut automatiser ce qui est « chiant » Nous avons vu dans un article précédent que nous automatisions instinctivement et ce depuis notre enfance. Plus précisément nous automatisons, en tant qu’humain, ce qui est « chiant ». Par « chiant » il faut entendre quelque chose de répétitif ou quelque chose de simple mais avec

Lire la suite »